【问题标题】:Erasing multiple symbols from a string从字符串中删除多个符号
【发布时间】:2013-07-05 10:45:56
【问题描述】:

我知道preg_replace('/[{}]/', '', $string); 会删除大括号,但如果我也有方括号并且还需要删除它们怎么办?

【问题讨论】:

  • 通过适当的转义将它们添加到字符类中

标签: php regex preg-replace


【解决方案1】:

为什么要为此使用正则表达式。如果您所做的只是替换字符串中的 4 个字符:

str_replace(array('[',']','{','}'),'',$string);

会做同样的事情。

【讨论】:

    【解决方案2】:
    preg_replace('/[{}\[\]]/', '', $string);
    

    您应该将它们添加到正则表达式中的类中,并进行适当的转义

     $string = 'asdf{[]a]}ds';
     echo preg_replace('/[{}\[\]]/', '', $string);
    

    输出asdfads

    【讨论】:

      【解决方案3】:

      当您正在寻找方括号删除时:

      $str = preg_replace("/\[([^\[\]]++|(?R))*+\]/", "", $str);
      

      这将转换为:

      This [text [more text]] is cool
      

      到这里:

      This is cool
      

      编辑

      $string = '<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>';
      $new_string = preg_replace('/\[\[.*?\]\]/', '<b>img inserted</b>', $string);
      
      echo $new_string;
      

      如果我能进一步帮助您,请告诉我。

      【讨论】:

      • 忘记大括号了吗?
      • 它对我有用.. :) @A.S.Roma 另请查看我的更新答案以获取更多想法
      【解决方案4】:

      你必须逃避它:

      /[{}[\]]/
      

      【讨论】:

      【解决方案5】:

      在字符类中包含方括号(转义):/[{}\[\]]/

      【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2016-11-22
      • 2013-05-19
      • 2012-06-25
      • 2013-08-20
      • 2023-01-11
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多