php preg_match_all проблемы - PullRequest
       10

php preg_match_all проблемы

0 голосов
/ 30 марта 2012

Я бы хотел отфильтровать изображения, проверив его расширение, и моя кодировка выглядит следующим образом:

preg_match_all("/<img.*?src=\"(.*?)\".*?\/>/i", $this->content, $resultImg);

, и результат будет таким:

Array (
     [0] => xxx/logo.png?1253 
     [1] => xxx/banner.jpg?1253 
     [2] => xxx/6606072563_a9d41ef0ca_z_medium.jpeg?1253 
     [3] => xxx/6605789711_43e2ca1f0d_z_medium.bmp?1253 
)

НоСистема просто принимает JPG, PNG и GIF, могу ли я узнать, как я могу удалить URL изображения, расширение которого не является JPG, PNG & GIF, используя код выше?

Спасибо всем

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Чтобы получить атрибут, вы должны играть с |оператор в регулярном выражении.Вот уродливое регулярное выражение, которое может выполнить эту работу:

/<img.*?(((class=\"([a-z0-9 ]+)\")|(style=\"([a-z0-9 :;#\-]+)\")|(name=\"([a-z0-9]+)\")|(id=\"([a-z0-9]+)\")|(src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\")).*?)+\/>/i

Я использовал следующий код для его проверки:

<img style="margin-left:20px;color:#fff;" onclick="javascript::void()"  class="xxx" id="4" src="test.gif?12345" name="anam" />

Если вы попытаетесь разобрать синтаксис HTML, вы должны использовать такие вещи, как htmlsimpledom , это будет менее сложно понять и реализовать

0 голосов
/ 30 марта 2012

Это следующее регулярное выражение вернет совпадения, если расширение - только png jpg или gif

/<img.*?src=\"(.*?)\.(jpg|png|gif)\".*?\/>/i

Изменить, чтобы позаботиться о вас цифровой параметр

/<img.*?src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\".*?\/>/i

Вы должны улучшить, приняв 'char как обертку адреса (аргумент src тега img) Мне интересно, можете ли вы объяснить мне, почему вы используете оператор lasy start (*?)? Я никогда не использовал его, поэтому не знаю, в каком случае это полезно.

Привет

...