2012-01-19 94 views
0

我在使用PHP addslashes函数转义双引号时遇到困难。如果我运行:在PHP(Wordpress)中转义双引号

$name = addslashes(get_the_title()); 

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

例如。 “欢迎多样性”移民论坛

我试图插入Wordpress数据到一个.ICS文件生成器,但我无法找到一种方法来成功地将Wordpress数据解析成与ICS合作的格式格式。

解决方案:我的解决方案是通过使用$ post-> post_title来绕过Wordpress函数get_the_title()。一旦我切换,转义工作正常使用addslashes。

+0

不应该你的ics文件生成器处理? – Mchl

+0

我正在写一个ICS发电机,我看过的现有发电机没有提供我需要的灵活性 –

+1

那么,你的发电机应该接受非转换的数据,并自己做所有需要的转义 – Mchl

回答

0

也许trim帮助(对scaping定期引号):

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

对于其他种类的报价,你可以尝试使用正则表达式。例如:

$title = preg_replace("/[\'\"\”\“]+/";, '', get_the_title()); 
$name = addslashes($title); 
+0

这似乎也没有帮助,报价仍未转换。 –

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())); 

...虽然如果是这样的问题,他们可能不需要逃避不管怎么说,这取决于你正在做的结果。

0

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