【发布时间】:2010-08-24 09:49:22
【问题描述】:
我的字符串是外语的。我使用以下正则表达式:
$str = 'մի քանի Բառ ձեր մասին';
$word = 'բառ';
$cont = preg_match_all("/.{0,80}[^\s]*?".preg_quote($word)."[^\s]*?.{0,80}/si",$str,$matched);
print_r($matched);//returns Array ( [0] => Array ( ) ) ..
.
...但如果我设置:
$word = "Բառ";//returns Array ( [0] => Array ( [0] => մի քանի Բառ ձեր մասին ) )
如何才能在外语中也使用 I 修饰符?
【问题讨论】:
-
这段代码的目的是什么?您是否尝试从文本中提取单词以及周围的单词?
-
@Gumbo 完全正确。如果字符串中甚至有子词,我会尝试提取单词和周围的单词。您如何看待这样的解决方案?
-
我宁愿将文本拆分成单词,找到属于或包含想要单词的单词,然后获取周围的单词。或者如果你想使用
preg_match_all,只需搜索想要的单词并使用PREG_OFFSET_CAPTURE标志来获取substr的偏移量(参见stackoverflow.com/questions/3306513)。 -
好的,但据我所知,如果我也使用
PREG_OFFSET_CAPTURE来获取偏移量,如果偏移量小于我提到的,它将返回大量结果。我对么?即,如果我设置offset=30但只有29个字符,它会返回空结果?
标签: php regex encoding modifier