我想知道我能不能做到这一点。它会检查$content
内是否有YouTube链接。如果是,那么它运行jQuery $.getJson
来获取它的缩略图,所以......
但是我发现它非常草率,但是如何对它进行编码:
$isY = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $content, $matches);
if($isY) {
foreach(array_unique($matches) as $m) {
?>
<script>
$.getJSON (
'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=?',
function(data) {
youtubeFetchDataCallback(data, <?php echo $show['id']; ?>);
}
);
</script>
<?php
}
}
或者这没关系吗?
答案 0 :(得分:1)
我认为最混乱的部分是上下文切换。我会使用字符串插值,只打开一个<script>
标记:
<?php
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, $show[id]);
}
);
";
}
echo '</script>';
}
答案 1 :(得分:0)
要获得更清洁的东西,你可以让你的PHP代码编写一个javascript数组,然后在javascript中你可以迭代这个数组并获得所有的缩略图。
如果优于这些多个<script>....</script>
像(未经测试)的东西:
<script type="text/javascript">
var Videos = new Array(
<?
if($isY)
foreach(array_unique($matches) as $m)
echo '"'.$m.'",'
?>
);
for (v in Videos)
$.getJSON( 'http://gdata.youtube.com/feeds/api/videos/'+v+'?v=2&alt=json-in-script&callback=?', function(data) {
youtubeFetchDataCallback(data, <?php echo $show['id']; ?>);
} );
</script>
答案 2 :(得分:0)
你可以这样做......稍微清洁一点:
$string = "#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#";
if(preg_match($string, $content, $matches);):
foreach(array_unique($matches) as $m):
?>
<script>
$.getJSON( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=?', function(data) {
youtubeFetchDataCallback(data, <?php echo $show['id']; ?>);
} );
</script>
<?php
endforeach;
endif;
答案 3 :(得分:0)
如果你很好地格式化它已经更容易了:
if($isY){
echo "<script>";
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,{$show['id']});";
echo "} );";
}
echo "</script>";
}
你没有使用正则表达式是正确的。代码没问题(不需要重复脚本标记) - 目标是可维护性。