2011-12-22 43 views
0

我的数据库有一个包含1000个术语及其定义的表格。 我想打印这些定义并为每个已经是一个词的单词添加一个span标签。带数组的preg_replace

我使用它来创建两个阵列(图案和替换):

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']); 
  • 利用该代码,我字符/在近距离标记处有错误。所以我想要一个解决方案,以便能够通过/ char传递一个值。或者我可能错过的任何其他解决方案。

感谢

回答

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

的/也是你的分隔符(指出你的正则表达式的开头和结尾)。所以,如果你想搜索的文字/,请确保您有一个反斜杠逃脱它,就像这样:

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

我从一开始就做到了这一点,但我采取了同样的错误...... :( – kokazani 2011-12-22 10:36:42

2

你可能想看看preg_quote

报价则表达式字符