我正试图从一个页面中榨取产品价格,但不幸的是它不是一个很好的干净的div,所以我不得不清除所有其他垃圾。
注意:我已经看过几个例子,但是他们都假设你的变量中只有很好的有组织数字,而不是最终填充的原始HTML。
我的变量可能包含的字符串示例:
$2.87 <span>10% Off Sale</span>
我玩过substr和sttrpos,阅读手册但仍无法自行解决。
我想在找到第一个小数位后剪切字符串两位数...毫无疑问,当你知道如何时它非常简单!
我最终希望得到什么:
$2.87
我自己尝试的混乱的一个例子:
$whatIWant = substr($data, strrpos($data, ".") + 2);
提前致谢,
答案 0 :(得分:3)
试试这个解决方案:
<?php
$string = "$2.87 <span>10% Off Sale</span>";
$matches = array();
preg_match('/(\$\d+\.\d{2})/', $string, $matches);
var_dump($matches);
输出:
array(2) {
[0]=>
string(5) "$2.87"
[1]=>
string(5) "$2.87"
}
有关更多信息(为什么结果是数组等),您应该查看preg_match()
函数上的PHP手册:link
答案 1 :(得分:2)
以下内容应该为您抓住比赛;
$pattern = '/(\$\d+\.\d{2})/';
$string = '$2.87 <span>10% Off Sale</span>';
$matches = array();
preg_match($pattern, $string, $matches);
输出:
数组([0] =&gt; $ 2.87 [1] =&gt; $ 2.87)
答案 2 :(得分:0)
有更好的方法来做到这一点。首先,假设您上面的html结构将始终相同,您可以执行以下操作:
$var = "$85.25 <span>10% Off Sale</span>";
$spl = explode("<", $var);
echo $spl[0];