在 PHP 中,我有一个字符串 $string 和一个数组 $acronyms(格式为“UK”=>“United Kingdom”)。
现在我想用一些 HTML 标签替换 $string 中的所有首字母缩写词。例如Hello UK
应该变成Hello <acronym title="United Kingdom">UK</acronym></pre>
我这样做:
foreach($acronyms as $acronym => $tooltip){
$string = preg_replace('/'.$acronym.'/i', ''.$acronym.'', $string);
}
问题是:假设我有一个文本Hello UK
和一个数组,用“United Kingdom”替换“UK”,用“RandomWord”替换“Kingdom”。然后文本将替换为Hello <acronym title="United <acronym title="RandomWord">Kingdom</acronym>">UK</acronym>
显然是混乱的。
所以问题是:如何让我的 preg_replace 只查找不在<acronym>
标签内的单词?(既不在标题属性中,也不在标签本身内)
编辑:根据响应进行第二次尝试(因为我无法回复代码)。仍然是同样的问题,首字母缩略词中的文本被第二次替换......
foreach($acronyms as $acronym => $tooltip){
$acronyms[$acronym] = '<acronym title="'.$tooltip.'">'.$acronym.'</acronym>';
}
$string = str_ireplace(array_keys($acronyms), array_values($acronyms), $string);