【发布时间】:2020-02-20 02:32:04
【问题描述】:
我正在定制一个 drupal 8 网站上的模块,其中某些 vimeo 或 youtube url 被转换为嵌入的 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>
在整个帖子正文中,模块匹配一个 url (https://vimeo.com/id1),然后使用 str_replace() 将每个 url 替换为生成的嵌入代码。
$embed_code = $this->convertVimeoUrlToEmbedCode($url);
$return['text'] = str_replace($url, $embed_code, $return['text']);
到目前为止,我尝试做的是:
- 在 href 标记中放置一个占位符文本代替 url,然后将所有 url 替换为嵌入代码,然后将 url 放回占位符中。
- 从文本中删除引号之间的所有url(修复了一半的问题)
本质上,我正在寻找一种干净的方法,用嵌入代码替换 $urls,同时忽略引号中的 $urls 或以任何其他方式打印在 html 标签中的 $urls
【问题讨论】:
标签: php regex drupal str-replace