我有以下正则表达式:
$patterns = array
(
'/\b(gubalowka hegy)\b/i',
'/\b(krakkó|wawel|wawelban|auschwitz|auschwitzba|auschwitz-birkenua)\b/i',
'/\b(királyi|város|fogaskerekű|séta)\b/i',
);
$replaces = array
(
'<strong>$1</strong>',
'<u><em>$1</em></u>',
'<strong>$1</strong>',
);
preg_replace($patterns, $replaces, $text);
问题是,只有一些词被替换。
通过这个例子,只有这些词:
Séta => <strong>Séta</strong>
Krakkó => <u><em>Krakkó</em></u>
királyi => <strong>királyi</strong>
Auschwitz-Birkenua => <u><em>Auschwitz-Birkenua</em></u>
其他词保持不变。
我试图让它以多种方式工作(分别替换每个单词,替换没有数组的单词组),但它们都不起作用。
您可以在这里查看: http ://adriaholiday.dev.webndev.hu/ajanlatok/lengyelorszagi-hetvege.html
正则表达式登录到 chrome 开发控制台
有人可以帮忙吗?谢谢你。
编辑:
如果我编写正则表达式,它可以工作
$pattern = '/\b(krakkó|wawel|wawelban|auschwitz|auschwitzba)\b/iu'
$replace = '<strong><u>$1</u></strong>';
$text = preg_replace($pattern, $replace, $text);
该问题仅在生成正则表达式时出现
$replace = '<strong>$1</strong>';
foreach (...)
{
$words .= "|{$word}"; // first vertical bar removed ...
}
// encoding UTF8
// pattern: /\b(krakkó|wawel|wawelban|auschwitz|auschwitzba)\b/iu
$pattern = '/\b(' . $words . ')\b/iu';
$text = preg_replace($pattern, $replace, $text);