2011-10-19 19 views
9

Sto tentando di rimuovere gli apostrofi dal testo e non funziona davvero. Deve essere qualcosa di piccolo.Problemi durante la sostituzione di Apostrofo con Preg_Replace

$text = preg_replace('/\'/', '', $text); 

Questo è quello che sto usando in questo momento per rimuoverlo. Che cosa sto facendo di sbagliato?

C'è una serie di questi per rimuovere caratteri speciali per trasformarli in url e memorizzarli nel mio database. Tuttavia, un batch recente è apparso con un & # 39; dove l 'era.

Qualsiasi aiuto è molto apprezzato. Grazie in anticipo.

+4

Perché stai usando 'preg_replace' invece di [' str_replace'] (http://www.php.net/manual/en/function.str-replace.php) o [ 'strtr'] (http://www.php.net/manual/en/function.strtr.php)? – Jon

+0

Funziona bene per me: http://www.ideone.com/ycu2E – 999999

+1

Funziona per me (anche se tutti hanno ragione che preg_replace non è appropriato). Forse c'è qualcosa di sbagliato nel tuo input. – mqsoh

risposta

1

Come sull'utilizzo string_replace per questo, questo non necessita di un'espressione regolare.

$sText = preg_match("'", "", $sText); 

Detto questo, il seguente frammento funziona come supposto in 5.3:

$text = "woo't"; 
$text = preg_replace('/\'/', '', $text); 
echo $text; // woot 
3

& # 039 rappresenta l'entità codifica HTML di un apostrofo, cioè htmlspecialchars($text, ENT_QUOTES). È possibile verificare la presenza di entrambi i casi:

$text = "hey this is ' a couple of ' apostrophes with an encoding '"; 
$text = preg_replace('/&#0*39;|\'/', '', $text); 

// outputs: hey this is a bunch of apostraphes 
echo $text; 

È anche possibile attaccare con la str_replace() equivalente (tende a correre più veloce):

$text = "hey this is ' a couple of ' apostrophes with an encoding '"; 
$text = str_replace(array("'", "'"), '', $text); 

// outputs: hey this is a bunch of apostraphes 
echo $text; 
8

È possibile utilizzare questa espressione regolare per rimuovere apostrofi

$text = preg_replace('/(\'|&#0*39;)/', '', $text); 

puoi anche utilizzare str_replace per rimuovere gli apostrofi dopo aver eseguito html_entity_decode

$text = str_replace("'","", html_entity_decode($text, ENT_QUOTES)); 
+3

[Confini entità HTML - Zero Padding] (http://hakre.wordpress.com/2010/02/25/html-entity-boundaries-zero-padding/). – hakre

1

Oltre alle altre risposte, è possibile controllare anche la rappresentazione di unicode?

$result = preg_replace('/([\'\x{0027}]|')/u', '', $subject); 
Problemi correlati