我有西里尔文和一些关键字(或部分关键字)。我需要在关键字前显示5个字,然后在粗体标记中显示完整的关键字,然后显示5个字。例如:
全文:“Далеко-далекозасловеснымигорамивстранегласныхисогласныхживутрыбныетекстыВдалиотвсехживутонивбуквенныхдомахнаберегуСемантикабольшогоязыковогоокеанаМаленькийручеекДальжурчитповсейстранеиобеспечиваетеевсеминеобходимымиправилами。 。“
关键字是“АНТИК”(这就是不区分大小写的原因)。
结果,我需要:“...вбуквенныхдомахнаберегуСемантикабольшогоязыковогоокеана.Маленькийручеек...”
答案 0 :(得分:1)
尝试使用:
$str = "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами.";
$kwd = "АНТИК";
preg_match("#((\p{Cyrillic}+ \.?){0,5}(\p{Cyrillic}*$kwd\p{Cyrillic}*)( \p{Cyrillic}+){0,5})#iu", $str, $m);
echo $m[1];
答案 1 :(得分:1)
您可以使用:
$word = "АНТИК";
$pattern = '~^.*?((?>\w++\W++){0,5})(\w*'.$word.'\w*+)((?>\W++\w++){0,5}).*$~usi';
$result = preg_replace($pattern, '$1<strong>$2</strong>$3', $text);
如果您使用\ w字符类(匹配每个字母数字和下划线),您的文本使用西里尔字符编写的事实无关紧要。请注意,您可以\w
或\pL
替换\p{Cyrillic}
。如你所愿。