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

Форум Регулярные Выражения

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

 

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

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

тема: Помогите, разобраться
 
 автор: mmodem   (26.07.2011 в 14:12)   письмо автору
 
 


<?
$text1
='<div id=text>Поверь, ничтожество есть благо в здешнем свете.
К чему глубокие познанья, жажда славы,
Талант и пылкая любовь свободы,
Когда мы их употребить не можем?<p>Источник: stixi.ru</p></div>'
;

$text2='<div id=text>Поверь, ничтожество есть благо в здешнем свете.
К чему глубокие познанья, жажда славы,
Талант и пылкая любовь свободы,
Когда мы их употребить не можем?<strong>текст: М.Ю. Лермонтов</strong></div>'
;

$text3='<div id=text>Поверь, ничтожество есть благо в здешнем свете.
К чему глубокие познанья, жажда славы,
Талант и пылкая любовь свободы,
Когда мы их употребить не можем?<strong>фото: А.С.Пушкин</strong></div>'
;

$text4='<div id=text>Поверь, ничтожество есть благо в здешнем свете.
К чему глубокие познанья, жажда славы,
Талант и пылкая любовь свободы,
Когда мы их употребить не можем?</div>'
;

$pattern '{<div id=text>(.*?)(<p>источник\:|<strong>текст\:|<strong>фото\:|<\/div>)}si';

preg_match($pattern$text1$res); 
echo 
"<p>$res[1]</p>";            //Почему здесь выводит "Источник: stixi.ru"?

preg_match($pattern$text2$res);
echo 
"<p>$res[1]</p>";

preg_match($pattern$text3$res);
echo 
"<p>$res[1]</p>";

preg_match($pattern$text4$res);
echo 
"<p>$res[1]</p>";
?>

Собственно, вопрос в комментарии //Почему выводит "Источник: stixi.ru"?
Спасибо

  Ответить  
 
 автор: f111   (26.07.2011 в 14:43)   письмо автору
 
   для: mmodem   (26.07.2011 в 14:12)
 

ужазззззз)))

вы хотите..... вы хотитееее...наверно вытащить "текст" от тега <div id=text> включительно одного из предложенных вариантов (<p>источник\:|<strong>текст\:|<strong>фото\:|<\/div>) ?
я правильно понял? или до одного из вариантов?

если второй вариант то {<div id=text>(.*?)(?:<p>Источник:|<strong>текст:|<strong>фото:|</div>)}si

p.s. если хотите "учесть" некоторое условие, но вам не надо его запомнить то после открывающейся круглой скобки надо вписать ?: (?:<p>источник\:|<strong>текст\:|<strong>фото\:|<\/div>)

ааааааа, врубился в чём проблема, и пока что ХЗ почему не дружит с регистром

  Ответить  
 
 автор: mmodem   (26.07.2011 в 14:58)   письмо автору
 
   для: f111   (26.07.2011 в 14:43)
 

Поясните, пожалуйста, Вашу фразу "если хотите "учесть" некоторое условие, но вам не надо его запомнить", что это дает?

  Ответить  
 
 автор: f111   (26.07.2011 в 15:05)   письмо автору
 
   для: mmodem   (26.07.2011 в 14:58)
 

1) по непонятным мне причинам учитывается регистр при модификаторе i, можно так написать {<div id=text>(.*?)(?:<p>[Ии]сточник:|<strong>текст:|<strong>фото:|</div>)}is , но имхо ересь

подождём cheops-а))

2) учитель из меня фиговый, объясняю так же, а посоветовать, посоветую:
http://wmdn.ru/php/regular-expressions-in-php/
мне статья понравилась, хоть и не полная, но мне помогла вникнуть в синтаксис регулярок
(если не будет времени всё читать, то начинайте с "Подвыражения (подшаблоны)")

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

Добавил "u"

$pattern = '{<div id=text>(.*?)(<p>источник\:|<strong>текст\:|<strong>фото\:|<\/div>)}usi';

вроде заработало, однако ощущение, что это не панацея...

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

>Добавил "u"
енто для UTF, рад что помогло, мне при тестировании на regexpr.ru (в лом было локалку запускать) где win-1251 ничего не помогло

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

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