php
2011-11-03 14 views 34 likes 
34

Recibo el error de Parse, creo que es por las comillas más de "time". ¿Cómo puedo hacer que lo trate como una cadena completa?Escape de comillas en PHP

<?php 

    $text1= 'From time to "time" this submerged or latent theater in 'Hamlet' 
    becomes almost overt. It is close to the surface in Hamlet's pretense of madness, 
    the "antic disposition" he puts on to protect himself and prevent his antagonists 
    from plucking out the heart of his mystery. It is even closer to the surface when 
    Hamlet enters his mother's room and holds up, side by side, the pictures of the 
    two kings, Old Hamlet and Claudius, and proceeds to describe for her the true 
    nature of the choice she has made, presenting truth by means of a show. 
    Similarly, when he leaps into the open grave at Ophelia's funeral, ranting in 
    high heroic terms, he is acting out for Laertes, and perhaps for himself as well, 
    the folly of excessive, melodramatic expressions of grief."; 

    $text2= 'From time to "time"'; 

    similar_text($textl, $text2, $p); 
    echo "Percent: $p%"; 

El problema es que no puedo añadir manualmente \ antes de cada signo de comillas. Este es el texto real que necesito comparar.

+1

Manual aquí: http://php.net/manual/en/language.types.string.php - Escapar es la misma que en la mayoría de los otros idiomas de estilo C. – mario

+1

En realidad, el problema en la captura de pantalla anterior comienza con la comilla simple antes de la palabra Hamlet, como sugiere el color. Como la cadena se inicia con una comilla simple, todas las comillas simples dentro deben escaparse, excepto la última. Por lo tanto, la primera declaración de variable debería comenzar así: ''De tiempo a' vez 'esto ... teatro en \' Hamlet \ '...' La variable $ text2 está realmente bien. – Goozak

Respuesta

59

Utilice una barra invertida como tal

"From time to \"time\""; 

Las barras invertidas se utilizan en PHP para escapar caracteres especiales entre comillas. Como PHP no distingue entre cadenas y caracteres, también se puede utilizar este

'From time to "time"'; 

La diferencia entre comillas simples y dobles es que las comillas dobles permite la interpolación de cadenas, lo que significa que se puede hacer referencia a variables en línea en la cadena y su los valores serán evaluados en la cadena como tales

$name = 'Chris'; 
$greeting = "Hello my name is $name"; //equals "Hello my name is Chris" 

Según su última edición de su pregunta creo que la cosa más fácil que puede ser capaz de hacer que este punto es el uso de un 'heredoc.' No son de uso común y honestamente, normalmente no lo recomendaría, pero si quieres una forma rápida de obtener esta pared de texto en una sola cadena. La sintaxis se puede encontrar aquí: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc y aquí está un ejemplo:

$someVar = "hello"; 
$someOtherVar = "goodbye"; 
$heredoc = <<<term 
This is a long line of text that include variables such as $someVar 
and additionally some other variable $someOtherVar. It also supports having 
'single quotes' and "double quotes" without terminating the string itself. 
heredocs have additional functionality that most likely falls outside 
the scope of what you aim to accomplish. 
term; 
1

Cualquiera de escapar de la cita:

$text1= "From time to \"time\""; 

o utilice comillas simples para denotar la cadena:

$text1= 'From time to "time"'; 
+0

respuesta incorrecta. por favor, corríjalo –

+0

El problema es que tengo esta cadena. 'De vez en 'tiempo', el niño se obtendría 'confundido'' que da un error – user478636

1
$text1= "From time to \"time\""; 

o

$text1= 'From time to "time"'; 
+0

favor ver actualiza pregunta – user478636

1

Puede utilizar las funciones addslashes (php) a cualquier cadena para que sea compatible

http://php.net/manual/en/function.addslashes.php

+0

problema TBE es que tengo un texto grande con muchos "" marcas, y su error de análisis dando . Necesito esta cadena, ya que la usaré en la función similar_text() – user478636

2

guardar su texto no en el archivo php pero en el archivo de texto ordinario llamada, digamos, "text.txt "

luego con un simple comando $text1 = file_get_contents('text.txt'); tenga su texto sin ningún problema.

+0

En realidad, tendré una función que devuelve el texto de un archivo doc como tal $ text1 = readDoc ("abc.docx"); // devuelve texto ¿Esto estará bien? – user478636

+0

si lo tiene de cualquier forma que sea readDoc(), ¿POR QUÉ EN LA TIERRA LE PREGUNTÓ CÓMO ESCRIBIRLO EN LÍNEA, lo que atrae a mucha gente? –

+0

Lo siento, fue mi error, pensé que podrías usar @ o algún otro personaje antes del comienzo de la cadena como en C#. De todos modos funciona. – user478636

31

uso addslashes función:

$str = "Is your name O'reilly?"; 

// Outputs: Is your name O\'reilly? 
    echo addslashes($str); 
Cuestiones relacionadas