2010-11-10 61 views
0

我不知道我是否可以做到這一點更容易。它會檢查$content裏面是否有YouTube鏈接。如果確實如此,那麼它運行一個jQuery $.getJson得到它的縮略圖等等...這個foreach /如果被簡化了嗎?

但我發現它很邋遢我做的,但怎麼回事這應該編碼:

$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 
    } 
} 

或者這樣好嗎?

+1

格式是可怕的 – Andrey 2010-11-10 18:24:34

回答

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>'; 
} 
0

要讓東西更乾淨,你可以讓你的PHP代碼寫一個JavaScript數組,然後在JavaScript中,你可以遍歷這個數組並獲得所有的縮略圖。

如果會比這些多<script>....</script>

喜歡的東西(未經測試)更好:

​​
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; 
+0

我認爲這使情況變得更糟了... – meagar 2010-11-10 18:47:03

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>"; 
} 

你是對的不使用正則表達式。代碼沒問題(不需要重複腳本標籤,但是) - 可維護性的目標。