我正在尝试使用curl和simple_html_dom库抓取一些数据,我可以成功抓取数据,但是问题是我不希望包含数据的文本。
这是我正在使用的代码:
$price = $html->find("div[id='vi-mskumap-none'] span[itemprop='price']",0)->plaintext;
这是html源代码:
<div id="vi-mskumap-none" style="" class="u-flL w29 vi-price ">
<span class="notranslate" id="prcIsum" itemprop="price" style="" content="515.0">US $515.00</span>
正在报废
515.00美元
但是我想删除美元,只想要
515.00
有人可以帮忙
答案 0 :(得分:3)
由于您说的是字符串的格式始终是相同的,因此不需要任何正则表达式。只需使用str_replace()
$price = 'US $515.00';
$price = str_replace('US $', '', $price);
这是一个演示:https://3v4l.org/ZDl5t
这将为您提供一个字符串:515.00
。如果您希望它是真正的浮动对象,则只需将其投射:
$price = (float)str_replace('US $', '', $price);
答案 1 :(得分:1)
如果您知道这只是一个数字,我的方法是:
$price = preg_replace("/[^0-9.\-]+/", '', $price);
正则表达式的含义如下:
[^
表示我们正在开始一个否定集合。它将匹配此集合以外的任何内容0-9
表示数字0到9 .
是一个句点,以防数字(如您的示例)有小数点(通常您必须在正则表达式中转义句点,因为句点的意思是“任何字符”,但是当它在这样的集合中时) (在方括号中),您不必逃脱\-
是转义的破折号“-”,我加了它,以防您发现负数。]
关闭集合+
表示它可以匹配一个或多个字符(通过这种方式,它可以在一次通过而不是三个过程中代替“ US $”,尽管我不知道这是否有区别)然后,我用空字符串''
替换所有匹配的内容(数字,句点或破折号除外),
答案 2 :(得分:1)
我认为您可以使用getAttribute('content')
代替plaintext
来获得所需的结果。
答案 3 :(得分:1)
我来晚了对不起:
<?php
$price = "US $515.00";
$price = str_replace('US $', '', $price);
echo '<div id="vi-mskumap-none" style="" class="u-flL w29 vi-price ">';
echo '<span class="notranslate" id="prcIsum" itemprop="price" style="" content="515.0">'.$price.'</span>';
?>
工作正常