0

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

Full text: "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами."

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

结果,我需要:“...в буквенных домах на берегу Семантика большого языкового океана.Маленький ручеек...”

4

2 回答 2

1

试一试:

$str = "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами.";
$kwd = "АНТИК";
preg_match("#((\p{Cyrillic}+ \.?){0,5}(\p{Cyrillic}*$kwd\p{Cyrillic}*)( \p{Cyrillic}+){0,5})#iu", $str, $m);
echo $m[1];
于 2013-06-14T18:03:06.683 回答
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}。如你所愿。

于 2013-06-14T18:05:30.253 回答