2017-08-13 112 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)