Php 正则表达式,该表达式将使用西里尔文关键字(不区分大小写)剪切西里尔文文本片段,并将其加粗

Php 正则表达式,该表达式将使用西里尔文关键字(不区分大小写)剪切西里尔文文本片段,并将其加粗,php,regex,preg-replace,Php,Regex,Preg Replace,我有西里尔文字和一些关键字(或其中的一部分)。我需要在关键字前显示5个单词,然后在粗体标记中显示完整关键字,然后显示5个单词。例如: 全文:"Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. ааааа

我有西里尔文字和一些关键字(或其中的一部分)。我需要在关键字前显示5个单词,然后在粗体标记中显示完整关键字,然后显示5个单词。例如:

全文:"Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. аааааааааааааааааааааа

关键字是“АБПК”(这就是不区分大小写的原因)

结果是,我需要:“……ббббббббббббббббббббб。试试看:

$str = "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами.";
$kwd = "АНТИК";
preg_match("#((\p{Cyrillic}+ \.?){0,5}(\p{Cyrillic}*$kwd\p{Cyrillic}*)( \p{Cyrillic}+){0,5})#iu", $str, $m);
echo $m[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);
$word=“АБПК”;
$pattern='~^.*((?>\w++\w++){0,5})(\w*'.$word.\w*+)((?>\w++\w++){0,5})。*$~usi';
$result=preg_replace($pattern,$1$2$3',$text);

如果您使用字符类(匹配每个字母、数字和下划线),那么您的文本是用西里尔字母书写的这一事实无关紧要。请注意,您可以将
\w
替换为
\pL
\p{西里尔字母}

您尝试过我们可以看到的东西吗?谢谢!它完全符合我的需要!!