5

我在 wordpress 中使用简码执行插件。

这只是让我可以编写这样的短代码 [email_spamproof]

但我试图回应一个脚本。请看下面...

<?php

echo '<script type="text/javascript">
    <!-- 
    // spam protected email
    emailE=("enquiries@" + "example.co.uk")
    document.write('<a title="E-mail Example" href="mailto:' + emailE + '">' + emailE + '</a>')
     //-->
    </script>
    <noscript>
        <span class="spam-protected">Email address protected by JavaScript. Please enable JavaScript.</span>
    </noscript>';

?>


现在你可能已经看到我的问题了。

通常当我回显内容时,它会像这样......echo 'hello';

然后你使用相同的撇号打破字符串 - 像这样......
echo 'hello ' . php_name() . ' and friends'

我的问题

该脚本也使用类似的方法,将脚本变量添加到字符串中,但这些脚本撇号会混淆为 PHP 撇号,并破坏回显的字符串。

我怎样才能避免这种情况?

谢谢

4

6 回答 6

6

正确的代码:

<?php

echo "<script type='text/javascript'>
    <!-- 
    // spam protected email
    emailE=('enquiries@' + 'example.co.uk')
    document.write('<a title='E-mail Example' href='mailto:' + emailE + ''>' + emailE + '</a>')
     //-->
    </script>
    <noscript>
        <span class='spam-protected'>Email address protected by JavaScript. Please enable JavaScript.</span>
    </noscript>";

?>
于 2015-02-25T17:57:02.890 回答
2

这很容易。将您的 javascript 代码保存在一个新的文件中,然后使用它来加载它:

include('myjavascript.php');

然后您将使用该include选项作为 a echo,因为网络会将您的代码理解为 HTML,并且您可以在需要时执行它php(如echo)。

于 2013-08-19T13:34:30.683 回答
2

\字符是转义字符。为用于分隔字符串的字符的每个内部使用添加一个。

或者,使用HEREDOC

于 2012-08-07T11:43:08.263 回答
0

您可以在您的 javasript 代码中编写 ",然后在您的 php echo 中仅使用单引号 (')。

合适的方法是在您的 javascript 代码中使用转义字符“ \' ”(不带双引号)

于 2012-08-07T11:43:39.180 回答
0

您需要转义它们,然后连接变量:

(另外我不知道你是否意识到,但你正在呼应 javascript 的注释掉部分)

echo '<script type="text/javascript">    
  <!--      // spam protected email     
  emailE=("enquiries@" + "example.co.uk")     
  document.write(\'<a title="E-mail Example" href="mailto:'.emailE.'">'.emailE.'</a>\')      
  //-->     
  </script>     
  <noscript>         
  <span class="spam-protected">Email address protected by JavaScript. Please enable JavaScript.</span>     
  </noscript>'; 
于 2012-08-07T11:44:39.587 回答
0

您可以使用反斜杠转义它们:echo 'It\'s cold';或使用heredoc

echo <<<END
lots of text here
END;
于 2012-08-07T11:45:20.443 回答