转义字符不按预期工作

时间:2014-01-08 12:15:05

标签: php

我正在尝试在PHP中创建html内容,对于onclick事件,我已经为div添加了一个名为uchat的函数。该函数采用name参数,该参数是一个字符串。

如下所示:

$name = "Php string";

$echostr .= "<div onClick='uchat(\'$name\')'>
             </div>";

但是,传递一个像这样的字符串值会在单击div时导致语法错误。因为,单引号在单引号内。我试图逃避它,但它仍然无法正常工作。

错误是这样的:

SyntaxError: illegal character
uchat(\

我不知道如何逃避字符串参数,我已经多次遇到过这个问题,如果您有解决方案请帮忙。

感谢。

4 个答案:

答案 0 :(得分:2)

逃脱的单引号将与外部引号冲突:

$echostr .= "<div onClick=\"uchat('$name')\">
             </div>";

答案 1 :(得分:2)

以下是2种干净简单方法:

<强> 1。经典concat

    $name = "Php string";
    $str = "<div onClick=\"uchat('" . $name . "')\"></div>";
    print $str;

<强> 2。使用sprintf (http://us3.php.net/manual/en/function.sprintf.php

    $name = "Php string2";
    $str = sprintf("<div onClick=\"uchat('%s')\"></div>", $name);
    print $str;

答案 2 :(得分:1)

试试这个

$echostr .= "<div onClick='uchat(&quot;$name&quot;)'></div>";

答案 3 :(得分:1)

这有效:

<?php
$name = "Php string";

$echostr .= <<< EOF
<div onClick="uchat('$name')"></div>
EOF;

echo $echostr;
?>

<强>输出:

<div onClick="uchat('Php string')"></div>

为了避免转义所有双引号并使html代码更具可读性,您可以使用EOF

请参阅操作:http://ideone.com/vRCCVH