2012-01-19 93 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()函數肯定會添加轉義字符,但是如果您將該輸出發送到另一個刪除它們的函數,那可能會導致斜槓沒有被轉義。