2

私は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", 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;
}
4

3 に答える 3

0

まず、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]); 
}

PHPスニペットの

于 2012-05-12T06:47:35.693 に答える
0

問題は、json_encodeが余分な文字('\'エスケープ文字)を追加したり、他の文字を(ASCIIでエンコードされた同等の文字に)変換したりすることです。これは、正規表現が一致しないことを意味します。$contentsの元の値に対して正規表現を実行する必要があります。ちなみに、これは配列であるため、$url値全体をエコーし​​ないでください。

于 2012-05-12T06:48:43.137 に答える
0

いくつかのエラーがありますが、javascriptvarをphpvarとして保存し、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);

}
}
于 2012-05-12T06:52:09.220 に答える