PHP中的搜索和正则表达式
因为我是PHP新手,下面是我的js代码PHP中的搜索和正则表达式,php,regex,Php,Regex,因为我是PHP新手,下面是我的js代码 var sites = [ //Texte anime {url:" http://carouselinfo.com/canal/", duration:9}, //Texte anime {url:" http://carouselinfo.com/canal-2/", duration:9}, //Intro detallee {url:"http://carouselinfo.com/index-t1.html", d
var sites = [
//Texte anime
{url:" http://carouselinfo.com/canal/", duration:9},
//Texte anime
{url:" http://carouselinfo.com/canal-2/", duration:9},
//Intro detallee
{url:"http://carouselinfo.com/index-t1.html", duration:35},
//CTA
{url:"http://carouselinfo.com/index-t2.html", duration:35},
//Football
{url:"http://carouselinfo.com/twitter-ligue/", duration:100},
//Texte anime
{url:" http://carouselinfo.com/canal-2/", duration:9},
//TrailersClub.com
{url:"http://trailersclub.com/?lang=fr", duration:480},
//Heure
{url:"http://carouselinfo.com/heure", duration:8},
//Meteo
{url:"http://carouselinfo.com/meteo", duration:12},
//Texte anime
{url:" http://carouselinfo.com/canal-cine/", duration:9},
//Cine
{url:"http://carouselinfo.com/cine/index-t1.html", duration:150},
//Texte anime
{url:" http://carouselinfo.com/canal-2/", duration:9},
//Heure
{url:"http://carouselinfo.com/heure", duration:8},
//Meteo
{url:"http://carouselinfo.com/meteo", duration:12},
//Texte anime
{url:" http://carouselinfo.com/canal-cine/", duration:9},
//Cine
];
我想执行一些搜索任务,比如url和持续时间,以便以单独的列显示,但当我执行http的Regx时,就不会在html上打印任何内容
以下是我的粗略PHP代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://carouselinfo.com/contents.js');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec ($ch);
$contents = json_encode($contents,true);
curl_close($ch);
echo $contents;
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
if (preg_match_all($reg_exUrl,$contents,$url))
{
echo '<br/>';
echo $url;
}
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://carouselinfo.com/contents.js');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$contents=curl\u exec($ch);
$contents=json_encode($contents,true);
卷曲关闭($ch);
echo$内容;
$reg|u exUrl=“/(http | https | ftp | ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/”;
if(preg_match_all($reg_exUrl,$contents,$url))
{
回声“
”;
echo$url;
}
首先删除json\u encode调用。然后应用下面的正则表达式
/url\s*:\s*"([^"]+)"/
代码应该是这样的
$reg_exUrl = '/url\s*:\s*"([^"]+)"\s*,\s*duration\s*:\s*(\d+)/';
if (preg_match_all($reg_exUrl,$contents,$matches))
{
print_r($matches[1]); // not using echo here
print_r($matches[2]);
}
示例首先删除json_encode调用。然后应用下面的正则表达式
/url\s*:\s*"([^"]+)"/
代码应该是这样的
$reg_exUrl = '/url\s*:\s*"([^"]+)"\s*,\s*duration\s*:\s*(\d+)/';
if (preg_match_all($reg_exUrl,$contents,$matches))
{
print_r($matches[1]); // not using echo here
print_r($matches[2]);
}
示例问题在于json_编码正在添加额外字符(“转义字符”)或转换其他字符(转换为ascii编码的等效字符),这意味着您的regexp无法匹配。您应该在$contents的原始值上运行regexp。顺便说一句,不要回显整个$url值,因为这是一个数组。问题在于json\u编码添加了额外字符(“转义字符”)或转换了其他字符(转换为ascii编码的等效字符),这意味着您的regexp无法匹配。您应该在$contents的原始值上运行regexp。顺便说一下,不要重复整个$url值,因为这是一个数组。您有一些错误,但是将javascript变量保存为php变量并执行foreach循环如何 像这样
$sites = array('http://www.php.net/','http://stackoverflow.com/','http://www.godaddy.com/');
$duration = array('5','100','5000');
foreach($sites as $site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec ($ch);
curl_close($ch);
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match_all($reg_exUrl,$contents,$urls);
if(isset($urls)){
var_dump($urls);
}
}
您有一些错误,但是将javascript变量保存为php变量并执行foreach循环怎么样 像这样
$sites = array('http://www.php.net/','http://stackoverflow.com/','http://www.godaddy.com/');
$duration = array('5','100','5000');
foreach($sites as $site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec ($ch);
curl_close($ch);
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match_all($reg_exUrl,$contents,$urls);
if(isset($urls)){
var_dump($urls);
}
}
删除
json\u encode
调用。这里不需要它,并在特殊字符周围添加了额外的转义,包括将/
转换为\/
,这会阻止正则表达式匹配。@DCoder+1我甚至会说json\u encode是一个错误:)@DCoder当我没有使用json\u encode时,然后回显$url print array这是正确的,preg\u match\u all
生成一个匹配数组,而echo
无法处理这些匹配。尝试使用print\u r
或var\u dump
代替。Json\u encode winll不工作,因为它传递的参数不是数组或对象,而是字符串。json_decode是这里应该使用的函数。但是字符串是JavaScript而不是JSON。因此它将不起作用。请删除json\u encode
调用。这里不需要它,并在特殊字符周围添加了额外的转义,包括将/
转换为\/
,这会阻止正则表达式匹配。@DCoder+1我甚至会说json\u encode是一个错误:)@DCoder当我没有使用json\u encode时,然后回显$url print array这是正确的,preg\u match\u all
生成一个匹配数组,而echo
无法处理这些匹配。尝试使用print\u r
或var\u dump
代替。Json\u encode winll不工作,因为它传递的参数不是数组或对象,而是字符串。json_decode是这里应该使用的函数。但是字符串是JavaScript而不是JSON。所以它不起作用。@shiplu.mokadd.im-show数组代替echo$url这就是为什么我使用json_encodeso,然后我想做一些任务,比如在每一行中打印一个持续时间:那么我应该如何打印它这是一个非常基本的PHP。你应该使用loop.mean,首先我找到duration,然后用duration打印每个html,对吗?更新了我的答案。现在它也捕获了持续时间。但是你已经构建了统一的数组,因为regex不能以这种方式捕获。@shiplu.mokadd.im-show数组代替echo$url,这就是为什么我要使用json_encode,所以在这之后我想做一些任务,比如在每一行中打印一个持续时间:那么我应该如何打印它这是一个非常基本的PHP。你应该使用loop.mean,首先我找到duration,然后用duration打印每个html,对吗?更新了我的答案。现在它也捕获了持续时间。但是你已经建立了统一的数组,因为正则表达式并不是这样捕获的。那么我应该用什么来打印每个URL呢?我应该用什么来打印每个URL呢?我编辑了一些代码,放进了真实的网站,并放了一个var转储,这样你就可以看到所有内容,在一个单独的文件上运行这个脚本,这样你就可以看到输出了。。。这是你要找的吗?你得把你的正则表达式修好我想,我没碰那个。。。。不是我的强项。不,我在寻找我的代码工作意味着我有js文件首先我使用curl函数yo extract,然后我想回显js文件的url,它是[url:,duration:35],我的意思是我想提取url和duration我编辑了一点代码,放入真实的网站,并放入一个var dump,这样你就可以看到所有内容,在单独的文件上运行此脚本,以便可以看到输出。。。这是你要找的吗?你得把你的正则表达式修好我想,我没碰那个。。。。不是我的强项。不,我正在寻找我的代码工作意味着我有js文件首先我使用curl函数yo extract,然后我想回显那个js文件的url,它是[url:,duration:35],我的意思是我想提取url和duration