嘿伙计我正在构建一个脚本,我试图在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);
?>
答案 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");
}
}