我必须通过php regex在HTML页面中找到特定标签之间的值。但我想如果HTML页面包含多个值,那么执行preg_match_all
否则什么都不做。
例如,如果preg_match
在HTML中找到4个值,则在下一阶段执行preg_match_all
,否则如果preg_match
只找到1个标记值,则不执行任何操作。
<td class"page">
<span class="my-tag">value1</span>
<span class="my-tag">value2</span>
<span class="my-tag">value3</span>
<span class="my-tag">value4</span>
</td>
preg_match('/<td class"page">(.*?)<\/td>/s';)
now do preg_match_all in next phase because preg_match find 4 values
preg_match_all('|\<span class="my-tag"\>(.*?)\</span\>|', $html, $string);
and if HTML contain only 1 value like this
<td class"page">
<span class="my-tag">value1</span>
</td>
因此,如果HTML只包含1个值,则不执行任何操作
答案 0 :(得分:0)
基本上,从你的preg_match
开始,你会得到一个字符串,如下所示:
Array
(
[0] => <td class="page">
<span class="my-tag">value1</span>
<span class="my-tag">value2</span>
<span class="my-tag">value3</span>
<span class="my-tag">value4</span>
</td>
[1] =>
<span class="my-tag">value1</span>
<span class="my-tag">value2</span>
<span class="my-tag">value3</span>
<span class="my-tag">value4</span>
)
有了这个,我们可以继续进行比赛 - 不管它是否只找到一场比赛或多场比赛。 (因为它不会伤害任何东西以匹配一个项目或四个项目,我建议在您的代码中移动逻辑。)然后我们可以计算它找到的数量并将其存储在名为{的变量中{1}}。
$count
从那里开始,它只是一个简单的if / else语句来做你想做的事。
这是一个有效的演示:
答案 1 :(得分:0)
您可以在一个正则表达式中使用括号中的管道字符组合多个模式:
preg_match('/(cats?|dogs?|re.*tion)/', $string, $matches);