我需要从某些内容中提取第一个网址。内容可能是这样的:
({items:[{url:"http://cincinnati.ebayclassifieds.com/",name:"Cincinnati"},{url:"http://dayton.ebayclassifieds.com/",name:"Dayton"}],error:null});
或可能只包含一个链接
({items:[{url:"http://portlandor.ebayclassifieds.com/",name:"Portland (OR)"}],error:null});
目前我有:
$pattern = "/\:\[\{url\:\"(.*)\"\,name/";
preg_match_all($pattern, $htmlContent, $matches);
$URL = $matches[1][0];
但是只有在有一个链接的情况下才有效,所以我需要一个适用于这两种情况的正则表达式。
答案 0 :(得分:0)
希望这对您有用
<?php
$str = '({items:[{url:"http://cincinnati.ebayclassifieds.com/",name:"Cincinnati"},{url:"http://dayton.ebayclassifieds.com/",name:"Dayton"}],error:null});'; //The string you want to extract the 1st URL from
$match = ""; //Define the match variable
preg_match("%(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&\%\$#\=~_\-]+))*%",$str,$match); //I Googled for the best Regular expression for URLs and found the one included in the preg_match
echo $match[0]; //Return the first item in the array (the first URL returned)
?>
这是我在http://regexlib.com/Search.aspx?k=URL
上找到正则表达式的网站 像其他人所说的那样,json_decode
应该对你有用
答案 1 :(得分:0)
您可以使用此REGEX:
$pattern = "/url\:\"([^\"]+)\"/";
为我工作:)
答案 2 :(得分:-1)
对我来说闻起来像JSON。尝试使用http://php.net/json_decode
答案 3 :(得分:-1)
向我看来是JSON,访问http://php.net/manual/en/book.json.php并使用json_decode()。