0

我在使用 PHP 的 addlashes 函数转义双引号时遇到了困难。如果我运行:

$name = addslashes(get_the_title());

并且标题中有双引号,输出仍然有双引号,没有任何转义字符。

例如。“欢迎多元化”移民论坛

我正在尝试将 Wordpress 数据插入到 .ICS 文件生成器中,但我无法找到将 Wordpress 数据成功解析为与 ICS 格式协作的格式的方法。

解决方案:我的解决方案是使用 $post->post_title 来绕过 Wordpress 函数 get_the_title() 。切换后,转义与添加斜杠一起正常工作。

4

3 回答 3

0

如果引号没有被转义,则它们不是真正的双引号。可能是您的字符串在多字节字符集中,或者它们是“花式引号”。

这个函数经常解决这个问题:

function convert_fancy_quotes ($str) {
  return str_replace(array(chr(145),chr(146),chr(147),chr(148),chr(151)),array("'","'",'"','"','-'),$str);
}

所以试试:

$name = addslashes(convert_fancy_quotes(get_the_title()));

...尽管如果这是问题所在,他们可能无论如何都不需要转义,这取决于您对结果所做的事情。

于 2012-01-19T17:17:12.503 回答
0

弯引号绝对是要检查的东西。您可能还想检查您发送到的函数的预期输入。addslashes() 函数肯定会添加转义字符,但如果您将该输出发送到另一个删除它们的函数,这可能会使斜杠看起来没有被转义。

于 2012-01-19T17:26:37.680 回答
0

也许trim有帮助(用于转义常规引号):

$name = addslashes(trim(get_the_title(), '"'));

对于其他类型的引号,您可以尝试使用正则表达式。就像是:

$title = preg_replace("/[\'\"\”\“]+/";, '', get_the_title());
$name = addslashes($title);
于 2012-01-19T17:06:39.633 回答