Скрытые символы в HTML?

0

EDIT: проблема (полу) исправлена. Теперь, когда я бросаю строку, она становится и itege

Я пытаюсь получить серию данных с веб-сайта 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"

Проблема в том, что когда я пытаюсь привести цену в float, она возвращает 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."')");

"$ Decodedfile" - это просто json_decode'd data.json.

Итак, мой реальный вопрос: почему, когда я бросаю его в поплавок, он становится 0?

  • 0
    Вы пробовали var_dump($tmp) чтобы увидеть, что он содержит?
  • 1
    Этот preg_replace() не будет извлекать только цену. Он также будет включать номера из &#36; организация.
Показать ещё 3 комментария
Теги:
steam-web-api

1 ответ

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."')");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню