¿Cómo puedo usar PHP para eliminar todos los caracteres que NO son alfa, numérico, espacial, o puncutation?

He intentado lo siguiente, pero se tira de los signos de puntuación.

preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
InformationsquelleAutor Tedd | 2010-06-16

3 Comentarios

  1. 31
    preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $str);

    Ejemplo:

    php > echo preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", "⟺f✆oo☃. ba⟗r!");
    foo. bar!

    \p{P} los partidos de todo el Unicode caracteres de puntuación (ver Unicode propiedades de carácter). Si sólo desea permitir que determinados signos de puntuación, simplemente añadirlos a la negaba el carácter de clase. E. g:

    preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);
    • por lo que habría que agregar: . ? ! correcto
    • La segunda sería. La primera permite a todos los signos de puntuación.
    • Estos parecen tira TODOS los caracteres de 🙁
    • Estoy usando tu primer ejemplo y este parece que tira de todos los personajes. ¿Qué estoy haciendo mal?
    • no estoy seguro. He publicado una prueba de ejemplo. El docs mencionar un par de advertencias. Usted tiene que usar PHP después de 4.4 o 5.1 (dependiendo de la rama), y UTF-8, y la biblioteca PCRE tiene que ser compilado con --enable-unicode-properties
  2. 3

    Vas a tener a la lista de los signos de puntuación de forma explícita como no hay ningún atajo para que (por ejemplo \s es la abreviatura de caracteres de espacio en blanco).

    preg_replace('/[^a-zA-Z0-9\s\-=+\|[email protected]#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);
  3. 0
    $str = trim($str);
    $str = trim($str, "\x00..\x1F");
    $str = str_replace(array( "&quot;","&#039;","&amp;","&lt;","&gt;"),' ',$str);
    $str = preg_replace('/[^0-9a-zA-Z-]/', ' ', $str);
    $str = preg_replace('/\s\s+/', ' ', $str); 
    $str = trim($str);
    $str = preg_replace('/[ ]/', '-', $str);

    Espero que esto ayude.

Dejar respuesta

Please enter your comment!
Please enter your name here