Извлечь определенный промежуток

Я пытаюсь извлечь значение из диапазона из URL-адреса сайта, но не могу выделить это конкретное значение ....

вот рассматриваемый промежуток

<span data-currency-market = "" data-usd = "63968175026.0">

Я хочу только значение data-usd

 $html1 = file_get_contents( 'https://url.com' );
 $dom1 = new DOMDocument();
 @$dom1->loadHTML( $html1 );
 foreach ($dom1->getElementsByTagName('span') as $tag) {
    echo $tag->nodeValue . '<br/>';
 }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать preg_match_all вот так

<?php

    // Loading data for demo
    $html1 = '[...]
    <span data-currency-market = "" data-usd = "63968175026.0"></span>
    <span data-currency-market = "" data-usd = "63968175026.0"></span>
    <span data-currency-market = "" data-usd = "63968175026.0"></span>';

    // Your data source
    //$html1 = file_get_contents( $string );

    preg_match_all('/usd = "(.*)"/', $html1, $output_array);

    // Showing array
    echo "<pre>";
    print_r($output_array);
    echo "</pre>";
?>

Выведет это:

Если все, что вам нужно, это числа, используйте только

print_r($output_array[1]);

Итак, в конце все, что вам нужно, это 2 строки кода

$html1 = file_get_contents( $string );
preg_match_all('/usd = "(.*)"/', $html1, $output_array);

Ты можешь использовать

foreach($output_array[1] as $key=>$value){
    echo $value;
}

вернуть ценности

Если вы ожидаете только одно совпадение на этой странице, вы можете использовать preg_match таким же образом, как это, вместо preg_match_all

<?php
    $html1 = '[...]
    <span data-currency-market = "" data-usd = "63968175026.0"></span>
    <span data-currency-market = "" data-cad = "73175026.0"></span>
    <span data-currency-market = "" data-eur = "83968176.0"></span>';
    //$html1 = file_get_contents( $string );
    preg_match('/usd = "(.*)"/', $html1, $output_array);

    echo $output_array[1];
?>

Будет выведено: 63968175026.0

Нет проблем, Chrys!

Patrick Simard 28.12.2018 17:08

И последний вопрос. У вас есть идея расположить мои результаты в порядке возрастания? Например: $ html1 = file_get_contents ($ string); preg_match_all ('/ usd = "(. *)" /', $ html1, $ output_array); сортировка ($ output_array); foreach ($ output_array [1] как $ key => $ value) {echo $ value; }

Chrys 28.12.2018 22:47

Чтобы сделать это правильно с помощью DOM, вы можете использовать XPath для поиска всех элементов span с атрибутом data-usd. XPath - это просто //span/@data-usd, где @ обозначает атрибут. Вызов query() возвращает список совпадающих узлов, поэтому вы просто выполняете цикл таким же образом, как и с getElementsByTagName().

$html1 = '<div><span data-currency-market = "" data-usd = "1">
<span data-currency-market = "" data-eur = "2">
<span data-currency-market = "" data-usd = "3">
<span data-currency-market = "" data-eur = "4"></div>';

//$html1 = file_get_contents( 'https://url.com' );
$dom1 = new DOMDocument();
$dom1->loadHTML( $html1 );
$xp = new DOMXPath($dom1);
$dataUSD = $xp->query("//span/@data-usd");
foreach ($dataUSD as $tag) {
    echo $tag->nodeValue . '<br/>';
}

который с тестовыми данными возвращает ...

1<br/>3<br/>

Другие вопросы по теме