删除所有文本2位小数后放置PHP

时间:2016-03-08 15:54:04

标签: php

我正试图从一个页面中榨取产品价格,但不幸的是它不是一个很好的干净的div,所以我不得不清除所有其他垃圾。

注意:我已经看过几个例子,但是他们都假设你的变量中只有很好的有组织数字,而不是最终填充的原始HTML。

我的变量可能包含的字符串示例:

$2.87 <span>10% Off Sale</span>

我玩过substr和sttrpos,阅读手册但仍无法自行解决。

我想在找到第一个小数位后剪切字符串两位数...毫无疑问,当你知道如何时它非常简单!

我最终希望得到什么:

$2.87

我自己尝试的混乱的一个例子:

$whatIWant = substr($data, strrpos($data, ".") + 2);

提前致谢,

3 个答案:

答案 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];