Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбор страницы
 
 автор: mmodem   (16.07.2011 в 22:04)   письмо автору
 
 

Парсим контент.
На разных страницах, разные начала нужного блока, Например:

<div id=one>
<div id=two>
<div id=three>

Понимаю, что должно быть решение (функция), что бы поочередно перебрав каждое вхождение, переменной было присвоено значение найденное в тексте. Не могу найти.
Подскажите, пожалуйста, как

  Ответить  
 
 автор: Valick   (17.07.2011 в 00:40)   письмо автору
 
   для: mmodem   (16.07.2011 в 22:04)
 

посмотрите тему возможно пригодиться

  Ответить  
 
 автор: mmodem   (25.07.2011 в 13:18)   письмо автору
 
   для: Valick   (17.07.2011 в 00:40)
 

Попытался - не получается, подскажите где накуролесил? а то я уже запутался...

<?
$text
='Сижу за решеткой в темнице сырой. Вскормленный в неволе орел молодой,
<div id=one>Мой грустный товарищ, махая крылом, Кровавую пищу клюет под окном,
Клюет, и бросает, и смотрит в окно,</div> Как будто со мною задумал одно'
;

$words=array('<div id=one>','<div id=two>','<div id=three>'); //левая часть регулярного выражения
foreach($words as $value)
    {
    if(
substr_count($text,$value)>0
        {
        
$left=$value;
        
$pattern '|'.$left.'(.*?)</div>|i';
        
preg_match($pattern$text$res);
        
$content$res[1];
        }
    }
echo 
$content;
?>

  Ответить  
 
 автор: f111   (25.07.2011 в 17:31)   письмо автору
 
   для: mmodem   (25.07.2011 в 13:18)
 

>//левая часть регулярного выражения
спасибо, подняли настроение

тогда уж должно быть что-то вроде
$pattern = '{<div id=(?:one|two|three)>(.*?)</div>}is';
регулярку не проверял
модификатор s наверно потребуется

  Ответить  
 
 автор: mmodem   (25.07.2011 в 17:35)   письмо автору
 
   для: f111   (25.07.2011 в 17:31)
 

>спасибо, подняли настроение
зато сразу понятно :-)

Вот, до чего дошел:

<?
$text
='Сижу за решеткой в темнице сырой. Вскормленный в неволе орел молодой,
<div id=two>Мой грустный товарищ, махая крылом, Кровавую пищу клюет под окном,
Клюет, и бросает, и смотрит в окно,</div> Как будто со мною задумал одно'
;

$words= array('<div id=one>','<div id=two>','<div id=three>');
foreach (
$words as $val){
    if (
strstr($text,$val)){
        
$left=$val; echo '<p>$left - '.$left.'</p>'

    }
}
$pattern '|'.$left.'([^<]+)</div>|i'//echo '<p>$pattern - '.$pattern.'</p>'; 
preg_match($pattern$text$res);
print_r ($res);
$content$res[1]; 
echo 
'<p>'$content'</p>'
?> 


Похоже регулярное кривое... Подскажите, кто может

  Ответить  
 
 автор: f111   (25.07.2011 в 17:39)   письмо автору
 
   для: mmodem   (25.07.2011 в 17:35)
 

проверил своё http://ow.ly/5MvWF

>зато сразу понятно :-)
что пишите глупость?

раз вы после моего сообщения с предложенной регуляркой дальше продолжаете чудить, то пожалуй зря я влез в тему

удачи.

  Ответить  
 
 автор: mmodem   (25.07.2011 в 17:46)   письмо автору
 
   для: f111   (25.07.2011 в 17:39)
 

Спасибо, разобрался! Сейчас действительно понял в чем "чудо". Спасибо!

  Ответить  
 
 автор: f111   (25.07.2011 в 17:48)   письмо автору
 
   для: mmodem   (25.07.2011 в 17:46)
 

1) слава богу
2) рад

  Ответить  
 
 автор: mmodem   (26.07.2011 в 13:39)   письмо автору
 
   для: f111   (25.07.2011 в 17:48)
 

(Переместил http://softtime.ru/forum/read.php?id_forum=6&id_theme=81861&page=1)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования