2017-08-13 65 views
0

我想匹配了句「CA VOUS DIT quoi」用正則表達式模式工作:PHP字邊界/ B的正則表達式不與法國

$pattern=(\b".$value."\b) 

邊界與任何工作除了像法國獨家字符字ça開頭的ç。我可以這樣就改變了PHP語言環境解決字邊界問題:

setlocale(LC_ALL, 'fr_FR'); 

當我這樣做,它成功地匹配了一句,但後來所有的法國字符顯示爲,所以我得到:

�a vous dit quoi 

那種煩人的。解決一個問題只能創造另一個問題。我已經將html語言環境設置爲:

<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr" version="XHTML+RDFa 1.0" dir="ltr"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

不確定還需要做些什麼來解決這個問題?當然,法語應該顯示所有設置爲法語的區域設置...?

編輯:我的服務器通過phpinfo顯示UTF-8作爲本地和主值的默認字符集。

編輯:這個問題是不相似的建議,因爲這個問題是根本不相似。解決方案可能是一樣的,但任何人在谷歌搜索我遇到的問題都不會找到這個問題,但他們會找到我的。我認爲人們開始僅僅爲了它而將問題標記爲重複。

這個問題也類似於我的方式,因爲答案是一樣的: regular expression for French characters 但是,這將使所有三個問題重複。

+0

https://stackoverflow.com/questions/279170/utf-8-all-the-way-through可能是使用。完整地瀏覽它。 –

+0

這有點混亂。許多不同的答案與各種不同的建議。你指的是哪個答案?編輯:最重要的答案是關於MySQL和數據庫。似乎與我的問題沒有關係。 – Hasen

+0

沒關係。通讀一切,儘管MySQL的東西,並嘗試一些東西。可能只是一個文件編碼問題。 2-3分鐘。的閱讀是不夠的。先花一些時間然後回來告訴我們結果。 –

回答

0

這似乎是它的噩夢修復??顯示在法國語言環境中,但我可以通過修改正則表達式來改變這個問題。通過在模式中添加'u'作爲修飾符,它可以在ça中檢測到法語字符ç,並且所有工作正常,無需更改語言環境。

從這:

$pattern=(\b".$value."\b) 

這樣:

$pattern=(\b".$value."\b/u)