soloman

Рейтинг
67
Регистрация
19.03.2013
siv1987:
Там цикл foreach, а вы при каждый итерации присваиваете новое значение $YouLink и в итоге на выходе из цикла будете иметь одно последние значение массива. Думайте над логикой кода, по этому огрызку не понятно что у вас там за парсер.

Понял, а что нужно чтоб решить вопрос?Весь код поможет?

siv1987:
Регулярку лучше не трогать дабы не нарушать логику работы этого скрипта, а вот при записи $YouLink можно заменить на шаблон


$YouLink = '<object width="640" height="400"><param name="movie" value="http://www.youtube.com/v/номер видео ?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="'. trim($YouLink) .'?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object>'."\r\n";
fwrite ($fp, $YouLink);

Шаблон поставил, но что-то не то, пишет что по ключу спарсено к примеру 1 страница (тобиш 24 видео), а на самом деле в файл пишет одну строку (тобиш 1 видео), причем если парсить не 1 страницу (тобиш 24 видео), а скажем 5 страниц (тобиш 120 видео), то пишет в файл 5 строк с шаблоном но все строки (все видео) одинаковые.Помойму заменив ссылку на шаблон мы нарушили что-то в работе самого парсера.

Вот как выглядит код после замены:

$PageParse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$p);

if(strpos($PageParse, "/watch?v=")!=FALSE)

{

preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU", $PageParse, $matches);

$resultmovies=implode(" ", $matches[1]);

$resultmovies=str_replace("&hd=1", null, $resultmovies);

$resultmovies=str_replace("&feature=browch", null, $resultmovies);

$resultmovies=explode(" ", $resultmovies);

$resultmovies=array_unique($resultmovies);

$moviescount=count($resultmovies);

foreach($resultmovies as $movielink)

{

$YouLink = '<object width="640" height="400"><param name="movie" value="http://www.youtube.com/v/'.trim($movielink).'?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'.trim($movielink).'?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object>'."\r\n";

$cpl++;

}

// Записываем линк youTube

$fp = fopen ($filename, "a+");

fwrite ($fp, $YouLink);

fclose ($fp);

sleep(1);

}

Ставил ссылку назад, всё работает, 24 спарсено записано 24 разных ссылки на видео.Хм не понятно...

Милованов Ю.С:
You must change regular expression.

This is pattern for preg_match(_all) function.

$PCRE = '#(<object[^</object>]</object>)#uis';

Вот что мне получилось найти в коде, по поводу preg_match

$PageParse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$p);

if(strpos($PageParse, "/watch?v=")!=FALSE)

{

preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU", $PageParse, $matches);

$resultmovies=implode(" ", $matches[1]);

$resultmovies=str_replace("&hd=1", null, $resultmovies);

$resultmovies=str_replace("&feature=browch", null, $resultmovies);

$resultmovies=explode(" ", $resultmovies);

$resultmovies=array_unique($resultmovies);

$moviescount=count($resultmovies);

foreach($resultmovies as $movielink)

{

$YouLink.= "http://www.youtube.com/v/".trim($movielink)."\r\n";

$cpl++;

}

// Записываем линк youTube

$fp = fopen ($filename, "a+");

fwrite ($fp, $YouLink);

fclose ($fp);

sleep(1);

}

тока что конкретно менять и что мне даст эта замена, честно говоря я не совсем понял, но всё равно спасибо.

И если можно, пишите по русски или любым другим словянским языком.:)

Всего: 73