【问题标题】:preg_replace with arrayspreg_replace 用数组
【发布时间】:2011-12-22 08:04:35
【问题描述】:

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

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

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 传递一个值。或者我可能错过的任何其他解决方案。

谢谢

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:

    你可能想看看preg_quote

    引用正则表达式字符

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我从一开始就这样做了,但我犯了同样的错误...:(
      【解决方案3】:
      $patterns[$i] = '/'.preg_quote($row['term']).'/'; 
      $patterns[$i+1] = '/'.preg_quote('<span class="linkedterm" ><span class="linkedterm" >'.$row['term'].'</span>', '/').'/';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多