2011-11-27 16 views

Respuesta

6

yo no usaría una expresión regular, probablemente algo así como ...

$str = trim($str, '"\''); 

Cuando el segundo argumento es lo que usted define como puntuacion.

Suponiendo que lo que realmente se quiere decir era tira hacia fuera la materia que no es letras, dígitos, etc., me gustaría ir con ...

$str = preg_replace('/^\PL+|\PL\z/', '', $str); 
+0

Mejor aún, no pensé en eso. – Alasdair

+1

recortar con el segundo argumento es exactamente lo que estoy buscando. – Alasdair

3

Depende de lo que se llama puntuacion, pero:

preg_replace('/^\W*(.+?)\W*$/', '$1', $source); 
+0

Eso es un regex interesante ... ¿estás seguro de que va a funcionar? – alex

+0

@alex: No. Solucionado ahora :) Pero 'trim' es mucho mejor de todos modos. – Ryan

+0

Sigo pensando que no funciona, probablemente quieras poner esos caracteres dentro de una clase de personaje, p. '[;.]'. – alex

0

Para mantener sólo caracteres alfanuméricos

preg_replace('/[^a-z0-9]+/i', '', $string); 

para TODOS ponctuations:

preg_replace('[:punct:]+', '', $string); 
5

Puede depender de su definición de puntuación. Si se trata de "algo menos alfanumérico" o algo así, una expresión regular puede ser el camino a seguir. Pero si es "punto, signo de interrogación y signo de exclamación" o alguna otra lista manejable, esto será más fácil de entender:

trim($string, '?!.'); 
Cuestiones relacionadas