2010-11-19 54 views
3

我正在寫一個快速的PHP頁面,我需要忽略帶有重音字符的任何字符串。我使用的每個單詞本的preg_match()字符串:爲什麼此PHP正則表達式與重音字符不匹配?

「[ÀÁÅÃÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]」

(相當強力方法,我知道,但顯然[A-ZA-Z]可以匹配重音字符)

但功能似乎從來沒有當它搜索字符串與重音字符返回true(例如:「cheapâ€|」,「gustarÃa」 ...)

我沒有使用正則表達式之前,請指出我在這裏犯的任何愚蠢的錯誤!

+0

你知道你的字符串是如何編碼的嗎(例如UTF8)?如果您對它們進行任何操作(包括正則表達式搜索),這一點很重要。 – 2010-11-19 21:33:25

+0

你有一個編碼問題。 Megustaríahaberleídoloscarácteresnormales y bien entrados,pues que de otro modo no tengoningúnidea de lo queestásdiciendo。 :) – tchrist 2010-11-19 21:44:55

回答

3

PHP正則表達式需要delimiters,就像這樣:

preg_match('/[ÀÁÅÃÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]/', "gustaría"); 

注意,這也是最好使用單引號的正則表達式,因爲美元符號可以用PHP作爲變量的誤會。

+0

完美解決了這個問題,謝謝,我不知道分隔符! +1給你 – p17373 2010-11-19 21:33:39

相關問題