¿Cómo pueden los caracteres «\n \t \r » ser reemplazado por un ‘-‘ ?

echo preg_replace('/\s/','-','\n\t\n\r\n');//output '\n\t\n\r\n' instead should be'-----'

Edit: he de contenido dinámico en la aplicación real como:

 preg_replace('/\s/','-',$_Request['content']);

puedo solucionarlo agregando «» alrededor de la variable?

preg_replace('/\s/','-',"$_Request['content']");

Edit2:

¿Cómo puede ser cadena convierte de formato ‘str’ al formato «str»?

Gracias

  • Si usted está recibiendo desde $_GET, ¿no existente preg_replace() trabajo?
  • digamos que he regular de la cadena en el formato de » ¿cómo puede convertirse en «» formato? (Yo jugando con una cuerda que tiene un montón de función antes)
  • La forma en que PHP funciona, que simplemente es imposible hacerlo. Está usted seguro de que está recibiendo la correcta caracteres de espacios en blanco?
  • Por favor no comentarios de spam, sólo añade ruido a la página. Podemos ver sus ediciones sin su «por favor, ver mi edición de» comentarios.
InformationsquelleAutor Yosef | 2011-02-01

6 Comentarios

  1. 7

    Bien, dos cosas. En primer lugar, el problema es que las comillas simples en su cadena de reemplazo. Meta-Caracteres (\n\t\r, etc) no son procesados dentro de las comillas simples.

    Sin embargo, no utilice un regex para esto. No hay necesidad de que la complejidad de la expresión regular. Uso

    Utilizar str_replace:

    echo str_replace(array("\r", "\n", "\t", "\v"), '-', "\r\n\t\r\v\n\t");

    O strtr:

    echo strtr("\r\n\t\r\v\n\t", "\r\n\t\v", '----');

    Edición: Ahh, ahora entiendo lo que estás diciendo. Usted tiene una cadena con un literal \r\n\t\r\v\n\t en ella, y desea reemplazar con ellos. Bueno, usted puede hacer que a través de regex:

    $regex = '/(\s|\\[rntv]{1})/';
    $string = preg_replace($regex, '-', $_GET['content']);

    Básicamente, coincide con cualquier carácter de espacio, y cualquier literal \ seguida de r, n, t o v

    • Gracias! por qué no sólo : $regex = ‘/(\\\\[rnt]{1})/’;
    • Debido a que ignore literal saltos de línea y las etiquetas en el resultado. Depende de exactamente lo que usted está tratando de hacer (Que ha sido difícil decir). Pero que va a trabajar si usted está tratando de reemplazar el literal ocurrencias de la \n en una cadena de…
  2. 6

    Si usted está buscando para reemplazar la actual caracteres de espacios en blanco, deberá incluir la cadena de entrada en comillas dobles (") para PHP convierte las secuencias de escape para usted:

    echo preg_replace('/\s/', '-', "\n\t\n\r\n");

    Si por el contrario, las secuencias de escape se producen literalmente (es decir, usted ve \n\t\n\r\n en lugar de la línea de alimentación, ficha, avance de línea, retorno de carro, avance de línea), se debe sustituir por el siguiente carácter de clase (y mantener las comillas simples (') en la cadena de entrada):

    echo preg_replace('/\\[rnt]/', '-', '\n\t\n\r\n');

    Usted debe estar pasando content a través de $_POST en lugar de $_GET, no sé cómo PHP maneja tabulaciones, saltos de línea y retornos en OBTENER las variables.

    • Swissman: Que no estaba allí antes, pero me metí a ver si a alguien le aviso 🙂
    • vamos a decir que no $_Get es $_Request (puede ser de $_Post o $_Get)
    • Usted necesita el doble de escape de la ` \\ ` en la versión editada en ` \\\\ `. Consulte acción
    • Gracias.
  3. 2

    También hay un método de cadena para que:

    echo strtr($str, "\r\n\t\v ", "-----");

    Si quieres quitar puedes incluir varias líneas, pero conservan espacios, a continuación, retire el final y el quinto -.


    Ya que aparentemente quiere literal \r y \n convertir, usted necesita usar un mapa (o incluso un regex) como:

    echo strtr($str, array('\r'=>"\r", '\n'=>"\n", '\t'=>"\t", ' '=>"␣"));
    //single quoted strings escaped twice for illustration
  4. 0

    Tratar:

    echo preg_replace('/\s/','-',"\n\t\n\r\n");

    Nota de las comillas dobles en la cadena.

  5. 0

    Si encierra una cadena con comillas simples, caracteres especiales pierden su significado especial:

    echo preg_replace('/\s/','-',"\n\t\n\r\n");

Dejar respuesta

Please enter your comment!
Please enter your name here