Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
<?php

$test = <<<TEST
some text <imG src=image.gif> another text
text continues <iMg src= "image.png"  Alt=text>
txt <  img    src ='image.jpg'  alt ="text  sfds" sOme="other tags">
text again <img src=iMAGE.tiff alt=""> that's all, folks!
TEST;

// регэксп длинный, я его немножко разбил
$src_part = 'src\s*=\s*("[^"]*"|\'[^\']*\'|[^\s]+)';
$alt_part = '(\s+alt\s*=\s*("[^"]*"|\'[^\']*\'|[^\s]+))?';
preg_match_all('/<\s*img\s+'.$src_part.$alt_part.'(.*?)>/i', $test, $result);

echo '<pre>';
print_r($result);
echo '</pre>';

?>
Результат:
Код: Выделить весь код
Array
(
    [0] => Array
        (
            [0] => <imG src=image.gif>
            [1] => <iMg src= "image.png"  Alt=text>
            [2] => <  img    src ='image.jpg'  alt ="text  sfds" sOme="other tags">
            [3] => <img src=iMAGE.tiff alt="">
        )

    [1] => Array
        (
            [0] => image.gif
            [1] => "image.png"
            [2] => 'image.jpg'
            [3] => iMAGE.tiff
        )

    [2] => Array
        (
            [0] => 
            [1] =>   Alt=text
            [2] =>   alt ="text  sfds"
            [3] =>  alt=""
        )

    [3] => Array
        (
            [0] => 
            [1] => text
            [2] => "text  sfds"
            [3] => ""
        )

    [4] => Array
        (
            [0] => 
            [1] => 
            [2] =>  sOme="other tags"
            [3] => 
        )

)
Где здесь то, что тебе нужно и как убрать лишние кавычки, я думаю, понятно.

Важное замечание: после img обязательно должно быть src, а не какой-либо другой тэг. И alt, если он есть, дожен быть обязательно после src, иначе он не выцепится. Я когда-то давно делал на php парсер html (свой двигатель шаблонов делал), у него этих проблем не было бы, но он давно утерян

-------
http://ivank.ru


Отправлено: 17:41, 08-08-2004 | #2