<?php
header('Content-type: text/html; charset=gb2312');
include("parser.php");
$html = file_get_html('http://www.souyishop.com/shop_gkq5/1280/products.aspx?sku=1351249&shbid=20358');
$price = $html->find('span[id=Product_main1_Label5]');
$price = str_replace(" ", "", str_replace("¥", "", str_replace("元", "", $price[0])));
echo (int)$price . "<br>";
?>
基本上,我正在尝试取价¥32元,我删除了货币和空白区域。之后我尝试将字符串转换为int,以便稍后进行计算。猜猜看,我得到了0. :(
答案 0 :(得分:4)
这样的事情无法发挥作用:
echo intval('¥ 32');
所以尝试替换所有非数字
echo (int)preg_replace( '~\D~', '', $str );
答案 1 :(得分:2)
str_replace链很麻烦
更优雅的解决方案是使用preg_match
$price = preg_match('/[0-9]+/i', $price, $matches);
print_r($matches);
答案 2 :(得分:2)
在这种情况下使用正则表达式:
$re = preg_match('/(\d+)/', $str, $matches);
$price = $matches[1];
答案 3 :(得分:0)
我认为你应首先回复$price
without和int转换以确定你是否实际上正在替换你认为的字符串项,这可能是它返回0的原因。
中文编码需要特殊处理。
编辑:
尝试使用html代码作为char(yen =&amp;#165;),请参阅:http://www.starr.net/is/type/htmlcodes.html