Замена значения параметра тэга!

Тема в разделе "Регулярные выражения", создана пользователем Curt, 23 сен 2011.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Curt

    Curt Постоялец

    Регистр.:
    3 окт 2007
    Сообщения:
    50
    Симпатии:
    4
    День добрый, такая проблема.. в строке есть тег
    Код:
    <iframe width="640" height="480" ...
    нужно заменить значение параметра width и height на другое, ну допустим 320 и 240..
    чтобы было так:
    Код:
    <iframe width="320" height="240" ...
    В регулярках вообще не соображаю пока, пробовал написать сам - не получилось!

    Помогите пожалуйста кто умеет) спасибо большое!
     
  2. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    на
    PHP:
    PHP
    PHP:
    $text=str_replace('width="640"','width="320"',$text);   
    PHP:
    $text=str_replace('height="480"','height="240"',$text);   
    в переменной $text ваш текст.
    А так нужно более точно спрашивать, потому как неизвестно где вырезать из чего.
     
    Curt нравится это.
  3. Oleg_Ci

    Oleg_Ci Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    25
    Симпатии:
    7
    или так, если изначально 640 и 480 неизвесны:
    PHP:
    $str '<iframe width="640" height="480" ...';
    echo 
    fun($str1000600);

    function 
    fun($str$widht$height){
        
    //return preg_replace('/<iframe width="\d+" height="\d+/i', "<iframe width=\"$widht\" height=\"$height", $str);
        
    return preg_replace('/(<iframe width=)"\d+"( height=)"\d+/i''$1"'.$widht.'$2"'.$height$str);
    }
     
    Curt нравится это.
  4. Curt

    Curt Постоялец

    Регистр.:
    3 окт 2007
    Сообщения:
    50
    Симпатии:
    4
    спасибо!!!
    а если между <iframe и width что-то есть? или между другими параметрами, это сработает?
    неа(((((( не работает(((((((
     
  5. Oleg_Ci

    Oleg_Ci Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    25
    Симпатии:
    7
    Там надо поставить .*?

    PHP:
    $str '<iframe ololo width="640" bla-bla height="480" ...'
    echo 
    fun($str1000600); 
    function 
    fun($str$widht$height){ 
        return 
    preg_replace('/(<iframe.*?width=)"\d+"(.*?height=)"\d+/i''$1"'.$widht.'$2"'.$height$str); 
    }
     
    Curt нравится это.
  6. Curt

    Curt Постоялец

    Регистр.:
    3 окт 2007
    Сообщения:
    50
    Симпатии:
    4
    ребят, ну помогите кто-нибудь пожалуйста.. очень надо!
     
  7. wal

    wal Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    89
    Симпатии:
    30
    PHP:
    $str '<iframe ololo width="640" bla-bla height="480" ...';
    echo 
    fun($str1000600);
    function 
    fun($str$widht$height){
        return 
    preg_replace('%(<iframe.+?width=)"\d+"(.+?height=)"\d+"%i''$1"'.$widht.'"$2"'.$height.'"'$str);
    }
    вот так попробуй...

    но это сработает есть width идет перед height
     
    Curt нравится это.
  8. Curt

    Curt Постоялец

    Регистр.:
    3 окт 2007
    Сообщения:
    50
    Симпатии:
    4
    хм.. тоже почему-то не работает(( есть аська? напишите мне пожалуйста в ICQ 141686
    в долгу не останусь
     
  9. Oleg_Ci

    Oleg_Ci Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    25
    Симпатии:
    7
    PHP:
    '/(<iframe.*?width=)"?\'?\d+(.*?height=)"?\'?\d+/is'
    ну а такую регулярку запихнуть в функцию?
     
    Curt нравится это.
  10. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Если везде идет одинаковое значение, проще вырезать так
    PHP:
    $text=str_replace('width="640"','width="320"',$text);  
    $text=str_replace('height="480"','height="240"',$text); 
    Уже давно вам помогли бы, если бы вы сказали что хотите вырезать, или показали откуда. Делов минута, вы три дня не можете сделать.
    Или дайте кто нибудь сделает.
    Заменить везде в тексте СТРОКУ1 на СТРОКУ2 (задача решается без регегулярных выражений:(
    $string=str_replace("СТРОКА1","СТРОКА2",$string);
    Если известны размеры то заменить еще можно так
    PHP:
    <?php
    $text
    =<<<EOFF
     iframe width="600" height="300"
    EOFF;
    $text=preg_replace("/(width=\"600\")/si",">width=\"900\"",$text);
    echo 
    $text=preg_replace("/(height=\"300\")/si","height=\"60\"",$text);
    ?>
     
    Curt нравится это.
Статус темы:
Закрыта.