在 PHP 中转义引号

php
2022-08-30 09:04:41

我收到解析错误,我认为这是因为引号。我怎样才能让它被视为一个完整的字符串?"time"

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

问题是我无法在每个引号之前手动添加。这是我需要比较的实际文本。\


答案 1

使用反斜杠

"From time to \"time\"";

反斜杠在 PHP 中用于转义引号内的特殊字符。由于PHP不区分字符串和字符,因此您也可以使用它

'From time to "time"';

单引号和双引号之间的区别在于,双引号允许字符串插值,这意味着您可以在字符串中内联引用变量,并且它们的值将在字符串中计算,如下所示

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

根据您上次编辑的问题,我认为您能够做到这一点的最简单的事情就是使用“heredoc”。它们并不常用,老实说,我通常不会推荐它,但如果你想要一种快速的方式将这堵文本墙放入单个字符串中。语法可以在这里找到:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc 下面是一个例子:

$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;

答案 2

使用加号函数:

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

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

推荐