william666
@william666

Как удалить до определенного символа и после с помощью регулярного выражения в php?

Помогите написать регулярное выражение preg_replace, с помощью которого будем получать только ссылку из яндекс-конструктора карт:

<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb7dbcf66a9b7b9da6551f0e57faacc7d56b5eefea90c5a357479ff1bcc47211&amp;width=100%25&amp;height=400&amp;lang=ru_RU&amp;scroll=true"></script>


в данном случае нужно оставить только https://api-maps.yandex.ru/services/constructor/1....
соответственно, удалить до символа src=" и после "> включительно
или может быть есть альтернативное решение?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Можно использовать класс DOMDocument для получения свойств HTML объекта
<?php
$htmlstr = '<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb7dbcf66a9b7b9da6551f0e57faacc7d56b5eefea90c5a357479ff1bcc47211&amp;width=100%25&amp;height=400&amp;lang=ru_RU&amp;scroll=true"></script>';

$dom = new DOMDocument();

$dom->loadHTML($htmlstr);

$src = $dom->getElementsByTagName('script')[0]->getAttribute('src');

printf("Script src: %s", $src);


PHP Parse HTML online
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
$link = "<script src=\"https://yandex.ru/path\">";
if (preg_match("/<script[^>]*? src=\"([^\">]+)\"[^>]*?>/si", $link, $matches))
{
    echo("Link: ".$matches[1]."\n");
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы