preg_match_all, получить все теги img, содержащие строку

этот код получает все теги img

preg_match_all('/<img[^>]+>/i',$a,$page);

но я хочу получить теги, имена которых включают "next.gif" или "pre.gif"

Например :

$page = '
<img border="0" alt="icon" src="http://www.site.com/images/man.gif" width="90" height="90">
<img border="0" alt="icon" src="http://www.site.com/images/pre.gif" width="90" height="v">
<img border="0" alt="icon" src="http://www.site.com/images/2.gif">
<img border="0" alt="icon" src="http://www.site.com/images/next.gif" width="90" height="90">
';

и вывод должен быть таким:

   <img border="0" alt="icon" src="http://www.site.com/images/pre.gif" width="90" height="90">
    <img border="0" alt="icon" src="http://www.site.com/images/next.gif" width="90" height="90">

person lachekar    schedule 24.12.2010    source источник
comment
О, мне нравится этот. Я попробую что-нибудь.   -  person Rudie    schedule 25.12.2010


Ответы (1)


Я бы пошел с этим:

/(<img[^>]*src=".*?(?:pre\.gif|next\.gif)"[^>]*>)/i

Или в PHP:

$regexp = '/(<img[^>]*src=".*?(?:pre\.gif|next\.gif)"[^>]*>)/i';
$iResults = preg_match_all($regexp, $str, $aMatches);
print_r($aMatches); // you'll see what you need

- изменить: Ой. Я допустил ошибку. . в pre.gif и next.gif в регулярном выражении, регулярное выражение должно быть экранировано !! Раньше я этого не делал. -- редактировать

PS. Возможно, вы неправильно использовали preg_match_all. Аргументы: (pattern, subject, &matches)

PS. Результаты моей выкройки + ваша тема:

Array
(
    [0] => Array
        (
            [0] => <img border="0" alt="icon" src="http://www.site.com/images/pre.gif" width="90" height="v">
            [1] => <img border="0" alt="icon" src="http://www.site.com/images/next.gif" width="90" height="90">
        )
    [1] => Array
        (
            [0] => <img border="0" alt="icon" src="http://www.site.com/images/pre.gif" width="90" height="v">
            [1] => <img border="0" alt="icon" src="http://www.site.com/images/next.gif" width="90" height="90">
        )
)
person Rudie    schedule 24.12.2010