【发布时间】:2011-06-30 12:20:06
【问题描述】:
嘿, 我不知道我做错了什么。 我有一个正则表达式模式,可以在内部查找 youtube url 或 [track=url]。
如果匹配正则表达式,我将返回一个 youtube 嵌入代码。我需要为每个视频设置一个唯一的 ID。我正在我的 preg_match_all foreach 循环中使用一个简单的计数变量创建此 ID。
每个视频所需的 $uniqueID 都可以正常工作。如果我的 $content 中有 3 个 [track=url],我会得到 3 个不同的 id 回显(player_1、player_2、player_3 等...)
但是,我唯一的主要问题是我不知道在这种情况下我是如何使用 preg_replace 的。我需要使用我正在创建的每个唯一 ID 返回每个视频的 embedCode。
<?php
$youtubeUrl = "/(\[TRACK=)((http|https)(\:\/\/)(www|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)(\.youtube\.)(com|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)([a-zA-Z0-9\-\.\/\?_=&;]*))(\])/si";
$search = preg_match_all($youtubeUrl, $content, $matches, PREG_OFFSET_CAPTURE);
$i = 0;
foreach ($matches[8] as $match) {
$watch = $match[0];
//unique id
$uniqueID = "player_" . $i; // player_0, player_1, player_2 ...
//final video url
$video = $uri . $watch;
echo $video . "<br/>"; //correct 3 times different
$content = preg_replace($youtubeUrl, embedCode($video, $uniqueID), $content);
// three times player_0
$i++;
}
//$content = preg_replace($youtubeUrl, embedCode($video, $uniqueID), $content);
// three times player_3
return $content;
?>
知道我需要在这里做什么吗?我很无奈! 如果我在循环内调用 preg_replace,我会得到 player_0 的 embed_code 的三倍,如果我在 foreach 循环外调用它,我会得到三倍的 player_3。
我在这里做错了什么!非常感谢您的帮助。
【问题讨论】:
标签: php loops preg-replace preg-match-all