Игорь_Vasinsky
22.11.2013 - 11:49
Цитата |
При этом strpos робит быстрее чем регэкспы, код понятней, не нужны симпл_хмл или дом, и страница которую парсишь может быть не валидной и вообще даже не хтмл/хмл а чем угодно. |
можно и на красный свет переходить дорогу - всё же быстрее, чем ждать зелёный
то что нет знаний в регулярках - это не говорит о том что они не нужны
не валидный?? ты парсишь карту сайта, которая для поисковых ботов сделана)) если она не валидная - то нафиг она вообще нужна))
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
в регэкспах я хорошо разбираюсь, не надо тут наговаривать. я не говорил что они не нужны, я сказал что получается проще сделать большую часть парсинга без них. естессно бывают места когда полученный с ->parseTo() кусок строки нужно обработать регэкспом.
Мой ответ был не про вопрос о sitemap.xml а по теме в целом.
Кстати интересно сколько оперативы отожрет симпл_хмл или ДомДокумент если туда загрузить сайтмап в 10Мб.
Игорь_Vasinsky
22.11.2013 - 12:39
про simplexml - это к разрабам - это оф. библия
а по остальному, я на ники не смотрел, отвечал как видел вопрос и предыдущие посты.
парсить можно даже if-else и перебирать все теги - тока нафиг - если есть regexp для этого придуманный.
зачем строчить 10 строк - когда достаточно одной.
оперативка.. были времена - парсил товары с картинками и описанием в 1кк штук, курлом, ничё, локальный сервер выдержал 23 часа работы, ничёго не сгорело - учитывая что это ноут, а не железо придуманное для сервера
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Здравствуйте подскажите пожалуйста как прикрутить к данному коду
<?php
$url = "http://site.ru/sitemap.xml";
$content = file_get_contents ($url);
$tag_in="<body>";
$tag_out="</body>";
preg_match_all("/loc>[^>]+>/",$content,$loc);
$count=count($loc[0])-1;
$fp=fopen('page.php','w');
for($i=0; $i<5; $i++ )
{
echo "<p>".substr($loc[0][$i],4,-6)."</p>";
$link_poln=trim(substr($loc[0][$i],4,-6));
$zabrat_content=file_get_contents ($link_poln);
$position=strpos($zabrat_content,$tag_in);
$zabrat_content=substr($zabrat_content,$position);
$position=strpos($zabrat_content,$tag_out);
$zabrat_content=substr($zabrat_content,0,$position);
$fp2=fopen("page/".$i.".php",'w');
fwrite($fp2,$zabrat_content);
fclose($fp2);
fwrite($fp,substr($loc[0][$i],4,-6)."\r\n");
}
fclose($fp);
?>
чтобы страници не називались 1-2 и тд. а название страниц парсилось с title страницы напимер 20 символов и переводилось в транслит автоматом
пробовал прикрутить код но что-то не получается забрать h1 или тайтл
/**************************/
$url_posta=substr($zagolovok, 0, 30);
$zagolovok= $zabrat_content;
$title_in="<h1>";
$title_out="</h1>";
$zabrat_title=file_get_contents ($link_poln);
$position_t=strpos($zabrat_title,$title_in);
$zabrat_title=substr($zabrat_title,$position_t);
$position_t=strpos($zabrat_title,$title_out);
$zabrat_title=substr($zabrat_title,0,$position_t);
и такой
// получение заголовка страницы
function get_doc_title($file){
$h1tags = preg_match('/<title> ?.* <\/title>/isx',$file,$patterns);
$res = array();
array_push($res,$patterns[0]);
array_push($res,count($patterns[0]));
return $res;
}
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.