查找XML中的所有标签及其位置

时间:2014-03-27 22:14:39

标签: php regex tags

是否可以在字符串中查找其位置的所有标签?

例如以下文字:

#$text = file_get_contents($file); # for the simplicity - see other line:
$text = "<tag> sometext <tag2> more text </tag2>";

在结果中我希望得到$text的所有标签及其位置:

 - [0] name = <tag>, position = 1

 - [1] name = <tag2>, position = X

 - [2] name = </tag2>, position = X

据我了解 - 应使用正则表达式。如果它有帮助 - 我知道所有标签的名称。为了简单起见,他们是:

<tag>, <tag1>, <tag2>, <tag3>, </tag>, </tag1>, </tag2>, </tag3>

获得理想结果的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

preg_match_all('@(\</?[a-z0-9]+\>)@', $text, $m);

$tags = array();
foreach ($m[1] as $i => $match) {
  echo "name = " . $m[1][$i] . ", position = " . ($i+1) . "\n";
}