我的数据库有一个包含 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']);
使用此代码,我在闭合跨度标记处出现字符
/
错误。所以我想要一个解决方案,能够使用 /
字符传递值。或者我可能错过的任何其他解决方案。
您可能想看看preg_quote
引用正则表达式字符
/ 也是分隔符(指出正则表达式的开始和结束)。因此,如果您想搜索文字 /,请确保使用反斜杠对其进行转义,如下所示:
$patterns[$i+1] = '/<span class="linkedterm"><span class="linkedterm">'.$row['term'].'<\/span>/';
$patterns[$i] = '/'.preg_quote($row['term']).'/';
$patterns[$i+1] = '/'.preg_quote('<span class="linkedterm" ><span class="linkedterm" >'.$row['term'].'</span>', '/').'/';