【问题标题】:PhP Find (and replace) string between two different stringsPhP 在两个不同的字符串之间查找(和替换)字符串
【发布时间】:2017-04-07 22:31:20
【问题描述】:

我有一个字符串,看起来像这样"<html>"。现在我想做的是获取"<"">" 之间的所有文本,这应该适用于任何文本,这样如果我做了"<hello>""<p>" 也可以。然后我想用一个包含标签之间字符串的字符串替换这个字符串。 例如
在:

<[STRING]>

输出:

<this is [STRING]>

其中 [STRING] 是标签之间的字符串。

【问题讨论】:

标签: php regex string replace


【解决方案1】:

使用捕获组匹配&lt; 之后不是&gt; 的所有内容,并将其替换为替换字符串。

preg_replace('/<([^>]*)>/, '<this is $1>/, $string);

【讨论】:

    【解决方案2】:

    这里有一个解决方案来测试模式是否存在,然后捕获它以最终修改它......

    <?php
    $str = '<[STRING]>';
    $pattern = '#<(\[.*\])>#';
    
    if(preg_match($pattern, $str, $matches)):
        var_dump($matches);
        $str = preg_replace($pattern, '<this is '.$matches[1].'>', $str);
    endif;
    
    echo $str;
    ?>
    

    回声 $str; 你可以在这里测试:http://ideone.com/uVqV0u

    【讨论】:

      【解决方案3】:

      我不知道这对你是否有用。 您可以使用正则表达式,这是最佳方式。但是您也可以考虑使用一个小函数,从字符串中删除第一个 &lt; 和最后一个 &gt; 字符。

      这是我的解决方案:

      <?php
      
      /*Vars to test*/
      
      $var1="<HTML>";
      $var2="<P>";
      $var3="<ALL YOU WANT>";
      
      /*function*/
      
      function replace($string_tag) {
      $newString="";
      for ($i=1; $i<(strlen($string_tag)-1); $i++){
          $newString.=$string_tag[$i];
      }
      
      return $newString;
      
      }
      
      /*Output*/
      
      echo (replace($var1));
      echo "\r\n";
      echo (replace($var2));
      echo "\r\n";
      echo (replace($var3));
      
      ?>
      

      输出给我:
      HTML
      P
      随心所欲

      已在 https://ideone.com/2RnbnY 测试

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 2020-12-01
        • 2022-08-04
        • 2018-02-14
        • 2011-11-20
        相关资源
        最近更新 更多