Php 如何在HTML中查找数字?
我应该提到我使用preg_match。 这是一个更大的代码修复,切换方法现在将是一个大头痛 我正在尝试创建一个正则表达式匹配:Php 如何在HTML中查找数字?,php,regex,Php,Regex,我应该提到我使用preg_match。 这是一个更大的代码修复,切换方法现在将是一个大头痛 我正在尝试创建一个正则表达式匹配: <span class="paper-name">some string</span>\r </h1>\r <div class="data-row">\r <span class="num">0.25 一些字符串\r\r\r 0.25 我真正需要的是最后一部分——数字。 它可以从
<span class="paper-name">some string</span>\r </h1>\r <div class="data-row">\r <span class="num">0.25
一些字符串\r\r\r 0.25
我真正需要的是最后一部分——数字。
它可以从0.00到9.99
我试图打破它:
<span class="paper-name">some string</span>
<div class="data-row">
<span class="num">
0.25
一些字符串
0.25
并发现两者之间没有运气。有人能帮忙吗
我非常接近:
我可以找到第一部分:
^.*(?<=(<span class="paper-name">some string<))
^.*(使用正则表达式
$str = '<span class="paper-name">some string</span><div class="data-row"><span class="num">0.25';
preg_match('/([0-9]+\.?[0-9].)/', $str, $matches);
echo $matches[1];
$str='some string0.25';
预匹配('/([0-9]+\.?[0-9].)/',$str,$matches);
echo$匹配[1];
改用解析器方式:
<?php
# html string
$html = <<<DATA
<h1>
<span class="paper-name">some string</span>
</h1>
<div class="data-row">
<span class="num">0.25</span>
</div>
DATA;
# set up the domdocument
$dom = new DomDocument();
$dom->loadHTML($html);
# the xpath object
$xpath = new DOMXpath($dom);
# query the dom
$numbers = $xpath->query("//span[@class = 'num']");
# iterate over the results
foreach ($numbers as $number) {
echo $number->nodeValue;
}
并且将适用于大多数其他HTML
代码段,而正则表达式可能不适用
编辑:
如果您坚持使用正则表达式(为什么?),您可以尝试:
<span class="num">\K\d(?:\.\d{2})?
\K\d(?:\.\d{2})?
请参阅。如果使用正则表达式,请尝试:
$html='1!'
一些绳子
0.25
0.22
';
preg#u match#u all('#(?:\s+)(?P\d(?:\.\d{2}):?)#isu',$html,$match);
变量转储($match['num']);
试试这个regexp/[0-9]+\.[0-9]{2}$/g
HTML和regex的可能重复项不是好朋友。使用解析器,它更简单、更快、更易于维护。请参阅:数字必须介于0.00
和9.99
您的regex匹配1.2X
并匹配ABCD123456XYZ
0.25
<span class="num">\K\d(?:\.\d{2})?
$html = '<h1>
<span class="paper-name">some string</span>
</h1>
<div class="data-row">
<span class="num">
0.25
</span>
<div class="data-row">
<span class="num">
0.22
</span>
</div>';
preg_match_all('#<span class="num">(?:\s+)?(?P<num>\d(?:\.\d{2}):?)#isu', $html, $match);
var_dump($match['num']);