Php 正则表达式在unicode字符串上搜索非unicode关键字

Php 正则表达式在unicode字符串上搜索非unicode关键字,php,regex,Php,Regex,我正在开发我的网站的自动完成功能。我对unicode有一个问题: 当用户键入关键字时,我从数据库中查找标题,然后插入标记以在结果上突出显示关键字。我使用PHPpreg_match函数将关键字替换为关键字。但我坚持以下情况: 用户类型tieng anh,找到结果tiế吴安祖ẻ,我还想突出显示tiếng anh在结果中 另一个例子是,用户类型congcu,结果是cácôcụ 数字营销,科特迪瓦ụ应该是突出显示 请提供帮助。您可以使用preg_match('#关键字(单词)#',$text,match

我正在开发我的网站的自动完成功能。我对unicode有一个问题:

当用户键入关键字时,我从数据库中查找标题,然后插入标记以在结果上突出显示关键字。我使用PHP
preg_match
函数将
关键字
替换为
关键字
。但我坚持以下情况:

用户类型
tieng anh
,找到结果
tiế吴安祖ẻ,我还想突出显示
tiếng anh
在结果中

另一个例子是,用户类型
congcu
,结果是
cácôcụ 数字营销
科特迪瓦ụ应该是突出显示


请提供帮助。

您可以使用
preg_match('#关键字(单词)#',$text,matches)
var_dump($matches)


您将看到
$matches[0]
是整个字符串,而
$matches[1]
是您想要的。

您可以使用
preg_match('#关键字(单词)#',$text,matches)
var_dump($matches)


您将看到
$matches[0]
是整个字符串,
$matches[1]
是您想要的。

您当前使用的正则表达式是什么?示例用户类型
tieng anh
,我使用:
preg_replace(“/(tieng | anh)/ui”,“$1”,“$title”)
也许它可以帮助您解决类似的问题-如果它只是用于突出显示,它可以在目标文本中搜索任何重音字符,并生成相应的搜索字符串。仅当目标字符串不是太多数据时才有意义。生成模式,例如用于
tiế吴安祖ẻ cácông
谢谢@Bobblebble,这真的很有帮助。您目前使用的正则表达式是什么?示例用户类型
tieng anh
,我使用:
pregôu替换(“/(tieng | anh)/ui”,“$1”,$title)
也许它可以帮助您解决类似的问题——如果只是为了突出显示,它可以在目标文本中搜索任何重音字符,并生成相应的搜索字符串。仅当目标字符串不是太多数据时才有意义。生成模式,例如用于
tiế吴安祖ẻ cácông
谢谢@Bobblebble,这真的很有帮助。我做了,但是
tieng anh
ti不匹配ếng anh
Try
ti(e|ế)ng
而不是
ti[eế]ng
如果我这样做,我必须处理太多的大小写,因为我不知道用户类型,所以我必须拆分为元音和辅音:(我这样做了,但
tieng anh
ti不匹配ếng anh
Try
ti(e|ế)ng
而不是
ti[eế]ng
如果我这样做,我必须处理太多的大小写,因为我不知道用户类型,所以我必须拆分为元音和辅音:(