将某些单词包裹在 HTML 标签中

问题描述 投票:0回答:3

我的数据库有一个包含 1000 个术语及其定义的表。 我想打印这些定义并向每个已经是术语的单词添加一个跨度标签。

我用它来创建两个数组(模式和替换):

while($row = mysql_fetch_array($rsd)) { 
    $patterns[$i] = '/' . $row['term'] . '/';
    $patterns[$i + 1] = '/<span class="linkedterm"><span class="linkedterm">' . $row['term'] . '</span>/';
    
    $replacements[$i + 1] = '<span class="linkedterm">' . $row['term'] . '</span>';
    $replacements[$i] = '<span class="linkedterm">' . $row['term']; 
    
    $i = $i + 2;
}

这与定义相呼应:

echo preg_replace($patterns, $replacements, $row['definition']);

使用此代码,我在闭合跨度标记处出现字符

/
错误。所以我想要一个解决方案,能够使用
/
字符传递值。或者我可能错过的任何其他解决方案。

php preg-replace
3个回答
2
投票

您可能想看看preg_quote

引用正则表达式字符


1
投票

/ 也是分隔符(指出正则表达式的开始和结束)。因此,如果您想搜索文字 /,请确保使用反斜杠对其进行转义,如下所示:

$patterns[$i+1] = '/<span class="linkedterm"><span class="linkedterm">'.$row['term'].'<\/span>/';

1
投票
$patterns[$i] = '/'.preg_quote($row['term']).'/'; 
$patterns[$i+1] = '/'.preg_quote('<span class="linkedterm" ><span class="linkedterm" >'.$row['term'].'</span>', '/').'/';
© www.soinside.com 2019 - 2024. All rights reserved.