|
|
|
| Пытаюсь так, но получается бред:
^<img (.*?) (?!width) (.*?)(?!height) (.*?)>$
|
| |
|
|
|
|
|
|
|
для: vadimka
(15.08.2013 в 17:46)
| | А цель какая? Извлечь или заменить? Лучше всего не пытаться составить одно мега-выражение, а задействовать два совместно с циклом или функцией php preg_replace_callback(). Т.е. вы либо извлекаете все изображения а потом в цикле смотрите есть у них атрибуты или нет. Либо задействуете функцию php preg_replace_callback() и принимаете решение в функции обратного вызова. | |
|
|
|
|
|
|
|
для: cheops
(16.08.2013 в 07:38)
| | найти в коде по всему проекту, я ищу через регулярные выражения.... | |
|
|
|
|
|
|
|
для: vadimka
(15.08.2013 в 17:46)
| | Если вам нужно только теги, то можно так:
<?php
header('Content-Type: text/plain');
$s = '<img src="img1.gif">
<img src="img2.gif" width=100>
<img height=100 src="img3.gif">
<img src="img4.gif">
<img width="100" height="100" src="img5.gif">
<img src="img6.gif">
<img src="img7.gif">';
$p = "#<img(?:.(?!(?:width|height)\s*=\s*\"?\d+\"?))+?>#si";
preg_match_all( $p, $s, $o );
print_r($o);
?>
Array(
[0] => Array(
[0] => <img src="img1.gif">
[1] => <img src="img4.gif">
[2] => <img src="img6.gif">
[3] => <img src="img7.gif">
)
)
|
А вот если вам из них нужно еще извлечь значение атрибута src, то лучше воспользоваться советом cheops'а, и пройтись по результату вторым проходом. | |
|
|
|
|
|
|
|
для: Sfinks
(16.08.2013 в 09:51)
| | Спасибо! то что нужно!!! не могли б Вы объяснить это место:
Ваш код работает, и ищет, единственно я его видоизменил, чтобы он "игнорировал" те строчки, где width|height имеется, но там не цифры, а переменные:
<img(?:.(?!(?:width|height)\s*=\s*\"?.*?+\"?))+?>
|
| |
|
|
|
|
|
|
|
для: vadimka
(16.08.2013 в 12:47)
| | ?: -это просто указание, чтобы результат из этих скобок не фигурировал в выходном массиве -можно опустить.
\s*=\s*\"?.*?+\"? -опущу чтобы не загромождать РВ и было проще понять.Остается:
<img(.(?!width|height))+?>
| Читается так:
<img после которого идет
(. -любой символ
(?! -сразу за которым нет совпадения с шаблоном- width|height)
)+ -такие символы повторяются 1 и более раз
? -до первого совпадения с шаблоном- > | |
|
|
|