2012-05-12 2 views
2

Как я новичок в PHP.Here мой JS кодПоиск и Regex в PHP

 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 и продолжительности таким образом, чтобы отобразить в отдельном coloumn, но когда я выполняю Regx для http тогда ничего не печатает на 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; 
} 
+1

Снимите 'json_encode' вызов. Здесь он не нужен и добавляет дополнительные экраны вокруг специальных символов, включая поворот '/' в '\ /', что предотвращает совпадение регулярного выражения. – DCoder

+0

@DCoder +1 Я бы даже сказал, что json_encode - это ошибка :) –

+0

@DCoder, когда я не использовал json_encode, тогда echo $ url print ARRAY – Arpit

ответ

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 snippet

+0

@ shiplu.mokadd.im-show ARRAY вместо echo $ url, почему я использую json_encode – Arpit

+0

применить json_encode в $ match. Только тогда вы можете использовать эхо. –

+0

Это работает спасибо ... – Arpit

0

Проблема заключается в том, что json_encode является добавлением дополнительных символов (например, «\» экранирующего символа) или преобразование других символов (их ASCII кодированного эквивалента), что означает, что ваше регулярное выражение не в совпадение. Вы должны запустить regexp над исходным значением $ content. Кстати, не отсылайте все значение $ url, так как это массив.

+0

Итак, что я должен использовать для печати каждого URL-адреса – Arpit

0

У вас есть несколько ошибок, но как насчет сохранения вашего javascript var как php var и выполнения цикла 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); 

} 
} 
+0

ok Я попытаюсь его реализовать – Arpit

+0

: он не работает, поскольку он показывает предупреждение !!!! – Arpit

+0

Я отредактировал код smidge, положил на реальные веб-сайты и поместил дамп var, чтобы вы могли все увидеть, запустите этот скрипт, как есть в отдельном файле, чтобы вы могли видеть результат ... Это looong –

Смежные вопросы