所以我试图在文本墙上匹配单词,并在比赛前后返回几个单词。一切正常,但我想问是否有任何方法可以修改它,所以它会寻找类似的单词。嗯,让我给你举个例子:
preg_match_all('/(?:\b(\w+\s+)\{1,5})?.*(pripravená)(?:(\s+){1,2}\b.{1,10})?/u', $item, $res[$file]);
此代码返回匹配项,但我希望将其修改为
preg_match_all('/(?:\b(\w+\s+)\{1,5})?.*(pripravena)(?:(\s+){1,2}\b.{1,10})?/u', $item, $res[$file]);
也会返回一个匹配项。它的斯洛伐克语和我尝试了一系列的unicode角色以及\ p {Sk}(以及其他几个),但无济于事。也许我只是把它放在错误的地方,我不知道......
这样的事情可能吗?
感谢任何帮助
答案 0 :(得分:1)
我不知道是否有“忽略重音”开关。但您可以使用以下内容替换搜索查询:
$query = 'pripravená';
$query = preg_replace(
array('=[áàâa]=i','=[óòôo]=i','=[úùûu]=i'),
array( '[áàâa]' , '[óòôo]' , '[úùûu]' ),
$query
);
preg_match_all('/(?:\b(\w+\s+)\{1,5})?.*('.$query.')(?:(\s+){1,2}\b.{1,10})?/u', $item, $res[$file]);
这会将您的'pripravená'
查询转换为'pripraven[áàâa]'
。
答案 1 :(得分:0)
(pripraven[áa])
或(pripravena\p{M}*)
或更可能是这些方法的某种组合。
我不知道在我当前的语言环境中指定“与'a'类似的所有Latin-1元音”的任何其他更简洁的方法。
答案 2 :(得分:0)
您可以使用strtr()
删除重音:请参阅PHP手册页以获取一个好例子 - http://php.net/manual/en/function.strtr.php
$addr = strtr($addr, "äåö", "aao");
您仍然需要指定所有相关字符,但这比使用正则表达式更容易。