2014-09-04 82 views
0

我有这样的XML:的preg_replace()<Char />标签

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

我需要剥去以下:

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

我尝试这样的模式:

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

我怎样才能把它们放在一起在一个单一的正则表达式:

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

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

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

回答

1

加入他们用或操作员|

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

你有一个反引号(')在你的代码是什么将导致PHP致命错误:) – 2014-09-04 17:52:25

1

这里是我的:

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