PHP:从页面中提取数字

时间:2014-12-15 23:38:10

标签: php regex matching

我从具有多个用户输入评级的页面中提取数据,这意味着语法有点草率。 案文如下:

<span date="12/10/2014">4.957/10</span>
<span date="12/10/2014">11/10</span>
<span date="12/10/2014">5 / 10</span>
<span date="12/10/2014">i say: 9 /10</span>
<span date="12/10/2014">10/ 10</span>
<span date="12/10/2014">0.1/10, no more</span>

你会如何获得这些评级? 评级将从0到1000000,并且最多包含3位小数。

上面得到的数组应该是:

4.957
11
5
9
10
0.1

所以基本上规则应该是这样的:
*将任何数字与&#34; / 10&#34;匹配背后。
*数字后面可以跟一个点,最多可以有3个附加数字 * /和评级之间可能存在空格,也可能在/和10之间 * / 10之后不应该有/。

2 个答案:

答案 0 :(得分:1)

如果我是你,我只是抓住这个号码,然后在正则表达式之外解决它是否符合你的范围:

'(\d+(?:\.\d{1,3})?)\s*/\s*10(?![^<]*/)'

更新

当有超过三个小数位(抓错了数字)时,我意识到我失败了,所以这里有一个更好的一个:

'(?<![\d.])(\d+(?:\.\d{1,3})?)\s*/\s*10(?![^<]*/)'

答案 1 :(得分:-1)

试试这个正则表达式:

[\d]+\.?[\d]*|[\d]*\.?[\d]+

它实际上做的是匹配字符串中第一次出现的数字,该字符串看起来像10或0.10或.10或10.(数字部分可以包含任何数字)。

为了更好地解释它的作用:https://www.regex101.com/