|
|
|
| есть у меня строчка:
<?
$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? А может это неправильная настройка чего-то?
В любом случае, может как-то можно оптимизировать этот код? | |
|
|
|
|
|
|
|
для: Loki
(16.09.2006 в 00:35)
| | У меня заработало, только когда .*? заменил на .+?, вринципе понять можно, так как .*? может принимать 0 символов и убираться между ALT= и первым " | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 01:31)
| | Это решение, конечно, неспортивное:) Так как не обрабатываются значения вида alt="", но за подсказку большое спасибо! С этой ретроспективной проверкой у меня уже моск набекрень:)
Рабочее решение выглядит так:
<?
preg_match('/(?<=alt=)"(.*?)(?<!\\\)"/si', $image, $alt);
|
PS И все же мне непонятно поведение регулярных выраженяй под разными системами... или все-таки виноваты разные версии php? | |
|
|
|
|
|
|
|
для: Loki
(16.09.2006 в 12:47)
| | >или все-таки виноваты разные версии php?
А сильно версии различаются? Была где-то тема, где сообщалось о различном поведении регулярных выражений в PHP 4 и PHP 5... | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 13:08)
| | Так и есть: на хостинге 5 версия, а в локале - 4. | |
|
|
|