preg_replace()<char>标签</char>

时间:2014-09-04 17:36:46

标签: php regex tags preg-replace

我有这个xml:

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

我需要删除以下内容:

<RandomAlphaCharsX/>,仅保留属性/值。

我尝试了这种模式:

$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("#<\w+[\s]{1}/>#", "", $str, -1);

我需要以某种方式排除<RandomAlphaChars/>之间的所有字符,我需要一些帮助。

编辑:哇,你很快。所有答案都很有效!

3 个答案:

答案 0 :(得分:2)

<\S+|\/>

这应该与两者相符。参见演示。

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

答案 1 :(得分:1)

使用或运算符|加入他们:

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

答案 2 :(得分:1)

这是我的:

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