Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Escaping quotation marks in PHP

Tags:

php

I am getting a parse error, and I think it's because of the quotation marks over "time". How can I make it treat it as a whole string?

<?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%"; 

The problem is that I can't manually add \ before every quotation mark. This is the actual text I need to compare.

like image 539
user478636 Avatar asked Nov 03 '11 17:11

user478636


People also ask

How do you escape a quotation mark?

Alternatively, you can use a backslash \ to escape the quotation marks.

Should I use single or double quotes PHP?

In PHP, people use single quote to define a constant string, like 'a' , 'my name' , 'abc xyz' , while using double quote to define a string contain identifier like "a $b $c $d" . echo "my $a"; This is true for other used of string.

How can I add double quotes to a variable in PHP?

Just escape them: echo "\"$time\""; You could also use single around the double quotes: echo '"' .


2 Answers

Use a backslash as such

"From time to \"time\""; 

Backslashes are used in PHP to escape special characters within quotes. As PHP does not distinguish between strings and characters, you could also use this

'From time to "time"'; 

The difference between single and double quotes is that double quotes allows for string interpolation, meaning that you can reference variables inline in the string and their values will be evaluated in the string like such

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

As per your last edit of your question I think the easiest thing you may be able to do that this point is to use a 'heredoc.' They aren't commonly used and honestly I wouldn't normally recommend it but if you want a fast way to get this wall of text in to a single string. The syntax can be found here: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc and here is an example:

$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; 
like image 58
MoarCodePlz Avatar answered Sep 20 '22 15:09

MoarCodePlz


Use the addslashes function:

 $str = "Is your name O'Reilly?";   // Outputs: Is your name O\'Reilly?    echo addslashes($str); 
like image 26
Matoeil Avatar answered Sep 21 '22 15:09

Matoeil