2011-06-22 17 views
32

Zamierzam zastąpić wszystkie znaki w ciągu znaków z wyjątkiem liter, cyfr, spacji i podkreśleń.Zastąp wszystkie znaki z wyjątkiem liter, cyfr, spacji i podkreśleń.

Czy ktoś mógłby podać przykład?

+0

Jakie przykłady okazało się, że nie działają? Jak nie działają? – BoltClock

+0

Zastąp je czym? –

+1

Dodam również, że do wszelkiego rodzaju manipulacji ciągami, pomaga uzyskać właściwą odpowiedź, jeśli podasz konkretny przykład lub dwa z tego, co zrobiłbyś w manipulacji i co chciałbyś wyjść z manipulacji. . – EBGreen

Odpowiedz

65

normalnie używać coś takiego:

$string = preg_replace("/[^ \w]+/", "", $string); 

który zastępuje wszystkie znaki nie-przestrzeni i bez słów z niczym.

+11

powinieneś używać pojedynczych cudzysłowów dla wyrażeń regularnych w PHP 'preg_replace ('/ [^ \ w] + /', '', $ string)' podwójne cytaty z \ w nich mogą spowodować nieoczekiwane zachowanie – DarkMukke

6
<?php 
$string = 'April 15, 2003'; 
$pattern = '/[^\w ]+/'; 
$replacement = ''; 
echo preg_replace($pattern, $replacement, $string); 
?> 
21
[^0-9a-zA-Z_\s] 

co chcesz zastąpić.

+16

Ten pomógł mi na podobnym kwestia. Dzięki! (Dla innych czytających to, nie zapomnijcie zawinąć tego w ukośne w ten sposób: '$ new_string = preg_replace ('/ [^ 0-9a-zA-Z _] /'," ", $ old_string)' Wyjąłem \ s, ponieważ nie musiałem zezwalać na spacje. – TecBrat

+1

'\ s' nie oznacza przestrzeni zawsze ... –

Powiązane problemy