2011-09-19 74 views
0

我使用的是Topsy,它返回了我的mebsite的最高排名文章的標題,它返回了一個包含帖子標題的鏈接的RSS文件。現在我只考慮後的名稱,並使用文章標題我試圖在MySQL數據庫中搜索使用下面的函數是這樣的:如何刪除wordpress中的特殊字符?

get_post_by_title($postTitle,'post'); 

但問題是顛倒的回報我的文章標題,但它也是在RSS添加一些特殊字符像「'」這樣的文件替換爲「'」這個文件。因爲這個get_post_by_title()函數不會以標題名稱返回給我。

編輯:返回我一個文章標題是這樣的:

iPad Applications In Bloom’s Taxonomy NEXT 

這裏單引號是特殊的性格特徵。

請幫幫我。由於

+0

你能舉一個它返回的標題的例子嗎? –

+0

當標題中有引號時,什麼不起作用?這聽起來像是一個問題,不需要解決,當輸出正確逃脫 –

+0

@所有編輯的問題 –

回答

0

首先,讓我們澄清一個誤解:在你的例子字符不是一個「特殊」的字符。它是Unicode代碼點U + 2019,「右單引號」。它的HTML實體引用是’。這是一個普通的字符 - 它恰好是一個沒有ASCII表示的普通字符。在回答你的具體問題之前,我需要告訴你閱讀Joel Spolsky's article "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"--它就是它所說的,除非你至少吸收了一點關於Unicode的知識,否則你將會遇到像這樣的問題。不要太擔心:每個人都會遇到像這樣的問題,直到他們學會如何處理文本。 Unicode並不像「很難」那麼「容易暴露我們對文本如何工作的無意識假設」。 †

現在,你的問題。

如果我正在讀你的話,你發生的事情是你的標題中有非ASCII字符的帖子,如’,當你用get_post_by_title()(它看起來像你'使用類似於the accepted answer on this question的東西 - 是嗎?)解決方案有兩條途徑:將標題以更易於搜索的格式存儲,或者使用可以找到非ASCII字符的搜索方法。

存儲的標題不同的需要,你可以通過PHP的built-in htmlentities()功能或將它們存儲在你的WordPress的數據庫之前運行這些 - 你也想確保你轉換角色,沒有HTML實體相當於'\xNN'的形式,使確保您的數據庫的整理/字符集設置爲UTF-8或另一個可識別Unicode的編碼。這將是一筆不小的努力。 ‡

使用不同的搜索方法不需要修改數據庫或挖掘到WordPress內部,但它確實需要非常小心地搜索字符串。您需要在搜索中使用您要查找的確切字符,必要時以'\xNN'字符引用的形式表示,或者在搜索中謹慎使用通配符。

無論哪種方式,祝你好運。如果有更多的代碼可見,則可以提供更具體的建議。



†:順便說一下,關於統一你的生活也將得到多少,容易得多,如果你使用比PHP更好的語言和比MySQL更好的數據庫。 WordPress與PHP和MySQL不可分割地聯繫在一起:PHP & MySQL在處理Unicode問題時都很糟糕,令人生畏,令人生氣。如果你從中刪除MySQL,你作爲程序員的生活會變得更好。

‡:認真地,PHP is atrociously bad at thisMySQL is in a shoelaces-tied-together state of fumbling。避免它們。從WP-config.php中

0

刪除

//定義( '值爲db_charset', 'UTF8');

// define('DB_COLLATE','utf8_unicode_ci');