2011-10-19 22 views
9

Estoy intentando eliminar apóstrofes del texto y realmente no funciona. Tiene que ser algo pequeño.Problema Reemplazo del apóstrofo con Preg_Replace

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

Eso es lo que estoy usando en este momento para eliminarlo. ¿Qué estoy haciendo mal?

Hay una serie de estos para eliminar caracteres especiales para convertirlos en direcciones URL y almacenarlos en mi base de datos. Sin embargo, apareció un lote reciente con & # 39; donde el 'era.

Cualquier ayuda es muy apreciada. Gracias de antemano.

+4

¿Por qué utiliza 'preg_replace' en lugar de [' 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

Funciona bien para mí: http://www.ideone.com/ycu2E – 999999

+1

Funciona para mí (aunque todos tienen razón en que preg_replace no es apropiado). Tal vez hay algo mal con su entrada. – mqsoh

Respuesta

1

Cómo sobre el uso string_replace para eso, este no requiere una expresión regular.

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

Dicho esto, el siguiente fragmento funciona como se supone en el apartado 5.3:

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

& # 039 representa la entidad HTML codificación de un apóstrofe, es decir htmlspecialchars($text, ENT_QUOTES). Puede comprobar si hay dos casos:

$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; 

También puede seguir con el str_replace() equivalente (tiende a correr más rápido):

$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

Se puede utilizar esta expresión regular para eliminar apóstrofes

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

también puede usar str_replace para eliminar apóstrofes después de hacer html_entity_decode

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

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

1

Además de las otras respuestas, ¿desea verificar también la representación de unicode?

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