【发布时间】:2011-06-10 10:38:14
【问题描述】:
我在使用 Preg_replace 和 preg_match_all 将 Youtube URL 转换为嵌入代码时遇到了一些麻烦。是的,我知道这个话题已经在 stackoverflow 中涉及到了,但并不完全符合我的要求。
我可以从没有 html 的 url 获取 ID:
http://(?:www\.)?youtu(?:be\.com/watch\?v=|\.be/)(\w*)(&(amp;)?[\w\?=]*)?
但我的网址格式如下:
<a href="http://www.youtube.com/watch?v=C9KAqhbIZ7o" class="comment-link">http://www.youtube.com/watch?v=C9KAqhbIZ7o</a>
我想把它全部转换成这个:
<object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/C9KAqhbIZ7o?fs=1&hl=es_ES&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/C9KAqhbIZ7o?fs=1&hl=es_ES&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object>
有人可以施展魔法并告诉我正确的表达式来检测所有 url,获取一次 ID 并将所有内容转换为嵌入代码吗?提前非常感谢您!
更新信息:
为了帮助并使其更简洁......
我有这个:
<p>This is an example of comment</p><strong>Hi bold!</strong><p>Look a youtube url! <a href="http://www.youtube.com/watch?v=C9KAqhbIZ7o" class="comment-link">http://www.youtube.com/watch?v=C9KAqhbIZ7o</a></p>
我想得到这个:
<p>This is an example of comment</p><strong>Hi bold!</strong><p>Look a youtube url! <object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/C9KAqhbIZ7o?fs=1&hl=es_ES&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/C9KAqhbIZ7o?fs=1&hl=es_ES&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></p>
感谢大家的帮助,非常感谢!
【问题讨论】:
-
您如何获得“未格式化的 url”?因为获取 a 元素的 href 参数更快。
-
感谢您的评论。 URL es 会自动格式化,因为 Wordpress 会对其进行转换,并且我想保持它以这种方式运行。是的,我知道更快,但我想替换所有 a 元素,而不仅仅是获取视频的 ID。
标签: php wordpress preg-replace preg-match preg-match-all