我正在编写临时PHP脚本来更新我的MySQL论坛的vBulletin数据库。
它就是这么做的。它会找到任何有youtube代码的条目。然后,它必须用一个指向youtube视频的链接来代替这个代码。
下面是我要学的一个例子:
$string = <<<END
Hi everyone! Check out this video that I just found on YouTube!
[youtube]<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/youtube]
END;我得让它看起来像这样
[URL=http://www.youtube.com/watch/?v=Md1E_Rg4MGQ]http://www.youtube.com/watch/?v=Md1E_Rg4MGQ[/URL]我和Regex一起工作有点头疼。我在Regex公司没有足够的经验来决定该怎么做。
它必须看起来像这样:
$string = preg_replace("#\[youtube\]?????\[/youtube\]#i", "[URL=http://www.youtube.com/watch?v=$1]http://www.youtube.com/watch?v=$1[/URL]", $string);救命啊!^_^
发布于 2009-11-01 23:27:55
也许是这样的?
$string = preg_replace('#\[youtube\].*?name="movie" value="(.*?)".*?\[/youtube\]#i', "[URL=$1]$1[/URL]", $string);请注意,这是有限的,因为它需要精确的字符串name="movie" value="????????????????"格式--从技术上讲,还有其他具有相同含义但顺序不同的有效HTML结构,等等。理想的解决方案是使用某种DOM解析器来获取电影属性的值,但如果您知道人们总是使用这种确切的格式(即,如果复制youtube中的复制/粘贴),那么regex就足够了。
https://stackoverflow.com/questions/1658763
复制相似问题