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

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

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

 

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

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

тема: Не работает регулярное выражение под Win
 
 автор: Loki   (16.09.2006 в 00:35)   письмо автору
 
 

есть у меня строчка:
<?
$image
='<IMG SRC="/images/photo/0000001.jpg" BORDER=0 align="right" WIDTH="250" HEIGHT="167" ALT="Некий комментарий" class="illustrate">';

Так как комментарий в теге alt может содержать экранированные кавычки, то регулярное выражение для получения этого значения выглядит следующим образом:
<?
preg_match
('/(?<=alt=")(.*?)(?<!\\\)"/si'$image$alt);

На хостинге все срабатывает прекрасно, а вот в локале (под денвером), искомое значение не выцепляется.
Хочу понять, это особенности операционки или версии PHP? А может это неправильная настройка чего-то?
В любом случае, может как-то можно оптимизировать этот код?

   
 
 автор: cheops   (16.09.2006 в 01:31)   письмо автору
 
   для: Loki   (16.09.2006 в 00:35)
 

У меня заработало, только когда .*? заменил на .+?, вринципе понять можно, так как .*? может принимать 0 символов и убираться между ALT= и первым "

   
 
 автор: Loki   (16.09.2006 в 12:47)   письмо автору
 
   для: cheops   (16.09.2006 в 01:31)
 

Это решение, конечно, неспортивное:) Так как не обрабатываются значения вида alt="", но за подсказку большое спасибо! С этой ретроспективной проверкой у меня уже моск набекрень:)
Рабочее решение выглядит так:

<? 
preg_match
('/(?<=alt=)"(.*?)(?<!\\\)"/si'$image$alt);


PS И все же мне непонятно поведение регулярных выраженяй под разными системами... или все-таки виноваты разные версии php?

   
 
 автор: cheops   (16.09.2006 в 13:08)   письмо автору
 
   для: Loki   (16.09.2006 в 12:47)
 

>или все-таки виноваты разные версии php?
А сильно версии различаются? Была где-то тема, где сообщалось о различном поведении регулярных выражений в PHP 4 и PHP 5...

   
 
 автор: Loki   (16.09.2006 в 18:05)   письмо автору
 
   для: cheops   (16.09.2006 в 13:08)
 

Так и есть: на хостинге 5 версия, а в локале - 4.

   
Rambler's Top100
вверх

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