HTML中的隐藏字符?

时间:2015-01-31 20:04:38

标签: php json steam-web-api

编辑:问题是(半)修复的。现在,当我转换字符串时,它变成了迭代

我正在尝试从Steam网站获取一系列数据。其中一个数据是价格。

我正在制作的网页请求会返回类似于以下内容的内容:

class=\"market_table_value\">\r\n\t\t\t\tStarting at:<br\/>\r\n\t\t\t\t<spanstyle=\"color:white\">&#36;9.05 USD<\/span>\r\n\t\t\t<\/span>\r\n\t\t\t<span

这不是整个回报,但它是相关部分。

然后我使用以下方法将其存储在数组中(因为请求通常会返回多个项目)

preg_match_all('#Starting\s*at:<br/>\r\n\t\t\t\t(.*)\t\t\t</span>#siU',$res->results_html, $sor);
foreach($sor[1] as $k => $v)
        $objects[$k]['price'] = $v; //str_replace('&#36', '', $v);

...然后我将对象写入data.json文件。 这是data.json的格式(相关部分。)

"price":"<span style=\"color:white\">&#36;0.48<\/span>\r\n"

问题是,当我尝试将价格转换为浮动时,它返回0.这是我对该部分的代码。

foreach($decodedfile as $datas) {
    $tmp = preg_replace(array("/[^0-9,.]/"), "", $datas->price);
    $ourprice = (float)$tmp;
    $sql2 = ("INSERT INTO Products (FileID, FileName, FileCat, FileType, FileMethod, FilePrice) VALUES ('".$id."', '".$datas->name."', '12', 'Rifle', 'email', '".$ourprice."')");

'$ decodingfile'只是json_decode'd data.json。

所以,我真正的问题是,为什么当我将它转换为浮点数时它会变为0?

1 个答案:

答案 0 :(得分:0)

在执行正则表达式之前,请尝试str_replace删除&#36;,然后在[0-9,.]+中使用preg_match作为正则表达式:

foreach($decodedfile as $datas) {
    $tmp = str_replace("&#36;","", $datas->price)
    $tmp = preg_replace(array("/[0-9,.]+/"), "", $tmp);
    $ourprice = (float)$tmp;
    $sql2 = ("INSERT INTO Products (FileID, FileName, FileCat, FileType, FileMethod, FilePrice) VALUES ('".$id."', '".$datas->name."', '12', 'Rifle', 'email', '".$ourprice."')");