在模式之间用字符串替换

时间:2014-09-05 10:26:57

标签: php xml replace preg-replace

我有一个问题。我想用php函数simplexml_load_string读取错误的xml格式,但我得到空值,因为格式是worng。部分xml:

<column name="price"><![CDATA[184.95]]></column>
<column name="category"><![CDATA[Dames]]></column>
<column name="subcategory"><![CDATA[Schoenen]]></column>
<column name="stock"><![CDATA[1]]></column>

我需要将其替换为:

<price><![CDATA[184.95]]></price>
<category><![CDATA[Dames]]></category>
<subcategory><![CDATA[Schoenen]]></subcategory>
<stock><![CDATA[1]]></stock>

正确阅读xml Feed。例如,可以用preg_match替换它吗?如何?

2 个答案:

答案 0 :(得分:1)

怎么样:

$str = preg_replace('#<column name="([^"]+)">(.+?)</column>#', '<$1>$2</$1>', $str); 

答案 1 :(得分:0)

下面会这样做,但我认为你可以用preg_replace来做,请看这个链接:php preg_replace matches

preg_match_all('/<column name=\"([a-z]+)\">(.*)<\/column>/', $string, $matches);

$string = '';
foreach( $matches[1] as $key => $name )
{
    $string .= "<{$name}>{$matches[2][$key]}</{$name}>\n";
}