【问题标题】:preg_replace() <Char /> tagspreg_replace() <Char /> 标签
【发布时间】:2014-09-04 17:36:46
【问题描述】:

我有这个 xml:

<RandomAlphaCharsA attr1="value1" attr2="value2 attrX="valueX" />
<RandomAlphaCharsB attr1="value1" attr2="value2 attrX="valueX" />

我需要去掉以下内容:

&lt;RandomAlphaCharsX/&gt;,仅保留属性/值。

我试过这个模式:

$str = '<RandomAlphaChars attr1="value1" attr2="value2 attrX="valueX" />';

$str = preg_replace( "#<\w+[\s]{1}#", "", $str, -1 );`
var_dump( $str );

//it echoes string(46) "attr1="value1" attr2="value2 attrX="valueX" />"

另一方面,这个模式匹配结束标签:

preg_replace("#/>#", "", $str, -1);

如何将它们放在一个正则表达式中?

显然,这不起作用preg_replace("#&lt;\w+[\s]{1}/&gt;#", "", $str, -1);

我需要以某种方式排除 &lt;RandomAlphaChars/&gt; 之间的所有类型的字符,我需要一些帮助。

编辑:哇,你真快。所有答案都很好用!

【问题讨论】:

    标签: php regex tags preg-replace


    【解决方案1】:
    <\S+|\/>
    

    这应该匹配两者。参见演示。

    http://regex101.com/r/nW4yD9/1

    【讨论】:

      【解决方案2】:

      使用 or 运算符 | 加入它们:

      $str = preg_replace( "#<\w+\s+|\s+/>#", "", $str);`
      

      【讨论】:

      • 你的代码中有一个反引号 (`) 会导致 PHP 致命错误:)
      【解决方案3】:

      这是我的:

      $str = preg_replace('#<\w+\s+(.*?)\s*/>#s', '$1', $str);
      

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多