Я настраиваю модуль на веб-сайте drupal 8, где определенные URL-адреса vimeo или youtube преобразуются во встроенные видеоролики iframe. Сам модуль прекрасно работает, однако возникает проблема, когда есть тег
<a href="https://vimeo.com/videoid">Some text</a>.
Тело сообщения может выглядеть примерно так:
https://vimeo.com/id1 //this line should get replaced with embed code by module
<a href="https://vimeo.com/id1"> Check out this video </a> //here, anything that is in href="" should not be replaced
on <a href="https://vimeo.com"> Vimeo </a>
В этом целомpost body, модуль соответствует URL (https://vimeo.com/id1), а затем использует str_replace () для замены каждого URL на сгенерированный код для встраивания.
$embed_code = $this->convertVimeoUrlToEmbedCode($url);
$return['text'] = str_replace($url, $embed_code, $return['text']);
До сих пор я пытался сделать следующее:
- Поместите текст-заполнитель вместо URL-адреса в теге href, затем замените все URL-адреса на код для встраивания, а затем вставьте URL-адрес обратно в заполнитель.
- Удалите все URL-адреса изтекст, который находится между кавычками (исправлена половина проблемы)
По сути, я ищу чистый способ замены $ urls на код для встраивания, игнорируя при этом$ urls, которые заключены в кавычки или напечатаны любым другим способом в HTML-тегах