目前我要检查$ content是否包含youtube链接,如果是,则运行youtubeFetchDataCallback()函数:
if (preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $content, $matches)) {
echo '<script type="text/javascript">';
foreach(array_unique($matches) as $m) {
echo "
$.getJSON (
'http://gdata.youtube.com/feeds/api/videos/$m?v=2&alt=json-in-script&callback=?',
function(data) {
youtubeFetchDataCallback(data, $id, '".$m."');
}
);
";
}
echo '</script>';
}
虽然我希望对此进行修改,但是如果有一个youtube链接,请将其从$ content中删除并运行youtubeFetchDataCallback。
所以通过删除,也许将youtubelink替换为''(空)。
我该怎么做?谢谢
更新:到目前为止尝试过:
if (preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $content, $matches)) {
echo '<script type="text/javascript">';
foreach(array_unique($matches) as $m) {
echo "
$.getJSON (
'http://gdata.youtube.com/feeds/api/videos/$m?v=2&alt=json-in-script&callback=?',
function(data) {
youtubeFetchDataCallback(data, $id, '".$m."');
}
);
";
}
echo '</script>';
}
$content = preg_replace("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", '', $content);
echo $content;
?>
视频链接仍在$ content
中答案 0 :(得分:1)
使用preg_replace
。
答案 1 :(得分:1)
我会使用preg_replace_callback在一个Javascript块中添加远程调用。
编辑:似乎你想删除youtube视频的所有链接,但如果我正确理解了表达式,那么表达式只匹配一些url参数。也许您可以修改正则表达式以匹配整个网址,并将youtube参数作为一个或多个捕获组传递给回调。更新(再次)如果您想删除该链接,您可以使用这样的正则表达式:
'#<a(?:.+?)(?:(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+)(?:.+?)</a>#'
更新(一次又一次)此表达式应该删除整个URL,因为搜索类似于youtube域的任何内容,然后直接找到空格(或换行符或制表符)。您还应该使用单引号括起此正则表达式。
'#(?:https?://)?(?:www\.)?youtube\.com/(?:[^\s]*)#'