从字符串中提取标记

时间:2014-11-21 22:41:34

标签: php regex

我有一个这样的字符串:

xxx<tag1>ABC</tag1>xxxyyyzzz<tag2>MNO</tag2>zzzz<tag1>EFG</tag1>

我需要将其转换为

<tag1>ABC</tag1><tag2>MNO</tag2><tag1>EFG</tag1>

我必须只提取标签及其内部内容。

我搜索regexp删除所有其他内容

$string2 = eregi_replace($reg, $string1)

2 个答案:

答案 0 :(得分:1)

$str = "<tag1>ABC</tag1>xxxyyyzzz<tag2>MNO</tag2>zzzz<tag1>EFG</tag1>";

preg_match_all('#<tag[0-9]>(.*?)</tag[0-9]>#i',$str,$result);

print_r($result[0]);

将输出

Array
(
    [0] => <tag1>ABC</tag1>
    [1] => <tag2>MNO</tag2>
    [2] => <tag1>EFG</tag1>
)

答案 1 :(得分:1)

试试这个:

$str = "xxx<tag1>ABC</tag1>xxxyyyzzz<tag2>MNO</tag2>zzzz<tag1>EFG</tag1>";
echo preg_replace('/(.*?)(<tag\d+>)(.*?)<\/tag\d+>(.*?)/','$2$3$4', $str);

注意:eregi is deprecated