Удаление дополнительного текста в curl - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь очистить некоторые данные с помощью библиотеки 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>

Утилизация

US $ 515.00

Но я хочучтобы снять доллары США и только хотите

515,00

Может кто-то, пожалуйста, помогите

Ответы [ 4 ]

3 голосов
/ 28 июня 2019

Поскольку вы говорите, что формат строки всегда будет одинаковым, нет необходимости в регулярном выражении.Просто используйте str_replace ()

$price = 'US $515.00';
$price = str_replace('US $', '', $price);

Вот демонстрация: https://3v4l.org/ZDl5t

, которая даст вам строку: 515.00.Если вы хотите, чтобы это был настоящий поплавок, просто разыграйте его:

$price = (float)str_replace('US $', '', $price);
1 голос
/ 28 июня 2019

Я опоздал Извините:

<?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>';

?>

нормально работает

1 голос
/ 28 июня 2019

Я думаю, вы можете использовать getAttribute('content') вместо plaintext, чтобы получить требуемый результат.

1 голос
/ 28 июня 2019

Если вы знаете, что это будет просто число, мой метод:

$price = preg_replace("/[^0-9.\-]+/", '', $price);

Вот что означает регулярное выражение:

  • [^ означает, что мы начинаемотрицательный набор.Он будет соответствовать всему, что НЕ в этом наборе
  • 0-9 означает, что числа от 0 до 9
  • . - это точка, если число (как в вашем примере) имеет десятичную дробьточка (обычно вы должны избегать точек в регулярном выражении, так как точка означает «любой символ», но когда он находится в таком наборе, как это (в квадратных скобках), вам не нужно экранировать его
  • \- isэкранированная тире "-", и я добавил его на случай, если вы сможете найти отрицательные числа.
  • ] Закрывает набор
  • + означает, что он может соответствовать одному или нескольким символам (таким образом он заменил бы «US $» за один проход вместо трех, хотя я не знаю, имеет ли это значение)

Затем я заменяю все, что соответствует (все, кроме числаили точка или тире) с пустой строкой '', которая эффективно удаляет ее.

...