使用PHP计算两个标记之间的标记出现次数

时间:2018-03-28 15:55:17

标签: php count

如何在<model>代码之间获得<make_1></make_1>代码? <model>标记可以是任意数量的标记。

<make_1>
<model_1>product Name</model_1>
<model_2>product Name</model_2>
<model_3>product Name</model_3>
<model_4>product Name</model_4>
</make_1>

3 个答案:

答案 0 :(得分:2)

如果我没有误解你的要求,那么你可以尝试如下。 php.net有一个超级简单示例,用于父标记中的count元素。请参阅此处的示例http://php.net/manual/en/simplexmlelement.count.php,我们也建议您查看有关SimpleXMLElement

的更多信息
$xml = <<<EOF
<make_1>
  <model_1>product Name</model_1>
  <model_2>product Name</model_2>
  <model_3>product Name</model_3>
  <model_4>product Name</model_4>
</make_1>
EOF;
$elem = new SimpleXMLElement($xml);

// THIS IS JUST FOR DEBUG PURPOSE
print '<pre>';
print_r($elem);
print '<pre>';
echo "Element Count: ". $elem->count();

输出:元素数:4

DEMO: https://eval.in/980182

答案 1 :(得分:2)

您可以将字符串设为SimpleXML对象,然后只计算它(假设它总是一个级别)。

$xml = new simplexmlelement('<make_1>
<model_1>product Name</model_1>
<model_2>product Name</model_2>
<model_3>product Name</model_3>
<model_4>product Name</model_4>
</make_1>');
echo count($xml);

演示:https://3v4l.org/V5LO5

答案 2 :(得分:0)

只是另一种解决方案:

<?php
$string='<make_1>
<model_1>product Name</model_1>
<model_2>product Name</model_2>
<model_3>product Name</model_3>
<model_4>product Name</model_4>
</make_1>';

echo preg_match_all("/(<model_[^>]+\>)/i", $string, $matches);

输出:

4

来源:http://php.net/manual/en/function.preg-match-all.php

DEMO:http://sandbox.onlinephpfunctions.com/code/56fb35a317e81bd3bc6d79abec720d1ab09063d1