需要帮助排除搜索文本数组中特定URL链接的函数

时间:2011-06-03 22:52:21

标签: php

嘿伙计我正在构建一个脚本,我试图在twitter文本结果中找到特定的链接

此脚本基本上检查文本是否包含网址,然后确定该网址是否为6个特定网址之一,如果匹配则将原始文本输出到标记为$ imgtweets

的新数组中 然而问题是,尽管我在数组中有大约4个文本字符串,但只有其中一个匹配并在$ imgtweets数组中返回,我很难确定我犯了错误的地方,任何帮助会走很长的路!

这是我的代码,我不得不让数组稍微小一点,因为我不允许在这一点上发布更多的2个超链接:

<?php

$tweets = array(
         "Photo: therulesofagentleman: http://tumblr.com/xc52sgx6u7",
         "http://mypict.me/iysEX So this is Karly. Karly say hello to the world. We've been at this a while when your fans (cont)",
         "this is some test text that doesnt contain any links for testing purposes");

         $imgtweets = array();

         foreach($tweets as $tweet) {
         preg_match_all("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)#ise", $tweet, $matches, PREG_PATTERN_ORDER);

         $tweetlinks = $matches[0];
         if (!empty($tweetlinks)){

         foreach($tweetlinks as $key => $link) {

         if (substr($link,0,14)=="http://lockerz" || substr($link,0,12)=="http://yfrog"
         || substr($link,0,14)=="http://twitpic" || substr($link,0,13)=="http://tumblr"
         || substr($link,0,13)=="http://mypict" || substr($link,0,14)=="http://instagr"  )
         {
          array_push($imgtweets,"$tweet");
          }
       }
      }
     }
       print_r($imgtweets);

?>  

2 个答案:

答案 0 :(得分:1)

基本上你可以用

之类的东西替换你的所有代码
$hosts  = "lockerz|yfrog|twitpic|etc";
$regexp = "~http://($hosts)~";

$img_tweets = preg_grep($regexp, $all_tweets);

答案 1 :(得分:1)

您可以使用数组和str_replace

,而不是使用substr
 $urls = array(*****your urls*****);
 foreach($tweets as $tweet) 
 {
   str_replace($urls, '', $tweet, $count);
   if ($count)
   {
      array_push($imgtweets,"$tweet");
   }
 }