【问题标题】:preg_replace not working :(preg_replace 不工作:(
【发布时间】:2010-11-23 01:20:17
【问题描述】:

好的,所以我有这个 PHP 脚本:

<?php

$stringz = "Dan likes to eat pears and his favorite color is green!";
$patterns = array("/pears/","/green/");
$string = preg_replace($patterns, '<b>\\1</b>', $stringz);
echo "<textarea rows='30' cols='100'>$string</textarea>";

?>

当我运行它时,我得到了这个: Dan likes to eat &lt;b&gt;&lt;/b&gt; and his favorite color is &lt;b&gt;&lt;/b&gt;!

应该有一个单词...但它没有...

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:

    那是因为你没有明确地捕获任何东西。 \\0当然会捕获整个比赛,但是为了捕获特定部分,如果要使用\\1\\2\\3等,则需要使用捕获组。将$patterns更改为此:

     $patterns = array("/(pears)/","/(green)/");
    

    () 表示捕获组,其中捕获的任何值都存储在引用 \\n 中,其中\\n 指的是第 1 个索引的 nth 捕获组。

    【讨论】:

    • 其实你总是在\0中捕获整个东西,不管你有没有括号组。
    • 对,我的意思是他没有明确捕捉任何东西。 :)
    【解决方案2】:

    \\1 更改为\\0

    【讨论】:

      【解决方案3】:

      怎么样

      $patterns = array("/(pears)/","/(green)/");
      

      ?

      \\1 适用于主题,即括号中的内容。

      【讨论】:

      • /** @see [我对亚历克斯的回答的评论] */
      猜你喜欢
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多