如何跳过 html 标题并使用正则表达式查找数字?

How to skip html headings and find number with regex?

我想查找 NUMBER,但跳过 H1、H2、H3 等。(所有可能的 HTML 标题变体)

示例 1:

<div>Today is good day. I got<h3>3<span> lotto tickets</span></h3></div>

示例 2:

I want to buy lotto tickets. <h1>Maybe 10 is enough</h1>

示例 3:

I want to buy lotto tickets. <h1>4 or 5</h1> is enough.

我有这个代码:

lotto tickets\D{0,15}(\d+\,\d+|\d+\.\d+|\d+)

但每次我从 HTML 标签中获取数字时.. <h3> (3),<h1> (1)。 我怎样才能跳过它们?

示例 1 中,我什么也得不到

示例 2 中,我应该得到数字 10

示例 3 中,我应该得到数字 4

(数字可以用.,例如:2.5)

这是可能未正确使用正则表达式的实例之一。

是的,你可以只使用正则表达式,但更简单的方法(以及更快地达到 运行)是 运行 strip_tags()在你的字符串上首先摆脱所有 HTML 标签,然后只为数字做一个标准的正则表达式。

$string = "<h3>This is post number 10</h3>";
$cleanString = strip_tags($string);
preg_match("%\b[0-9]+\b%",$cleanString,$number);

您应该使用以下正则表达式:

<h[1-6]>[^\d\<]*(\d+)[^\<]+<\/h[1-6]>