За последние 24 часа нас посетили 22172 программиста и 1821 робот. Сейчас ищут 1248 программистов ...

Сделать замену html кода

Тема в разделе "PHP для новичков", создана пользователем Денис9999, 28 окт 2015.

  1. Денис9999

    Денис9999 Новичок

    С нами с:
    28 окт 2015
    Сообщения:
    5
    Симпатии:
    0
    Прошу помощи!
    переменная содержит код html, необходимо сделать найти и заменить часть кода("<span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>"), на другое значение.
    сделать это функцией str_replace() не получается, так же strpos() тоже не находит
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (PHP):
    1. $str = '<div><span style="color:#A9A9A9"><strong><Фирма></strong></span></div>';
    2. $r= str_replace('<span style="color:#A9A9A9"><strong><Фирма></strong></span>', '<p>hello</p>', $str);
    3. echo $r;
    4.  
     
  3. Денис9999

    Денис9999 Новичок

    С нами с:
    28 окт 2015
    Сообщения:
    5
    Симпатии:
    0
    да, так все получается, но я значение "<span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>" беру из базы, и
    str_replace( $data[0] , '<p>hello</p>', $str)- уже не срабатывает
    Код (Text):
    1.  
    2.  $data = Array
    3. (
    4.     [0] => <span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>
    5.  
    6.     [1] => <span style="color:#A9A9A9"><strong>&lt;ВидДеятельности&gt;</strong></span>
    7.  
    8. )
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    тебе "...фирма..." и "...ВидДеятельности..." нужно заменить на <p>hello</p> ?
    Или "...фирма..." на <p>hello1</p>, а "...ВидДеятельности..." на <p>hello2</p>?

    https://secure.php.net/manual/ru/language.types.array.php
     
  5. Денис9999

    Денис9999 Новичок

    С нами с:
    28 окт 2015
    Сообщения:
    5
    Симпатии:
    0
    нужно "...фирма..." на <p>hello1</p>, а "...ВидДеятельности..." на <p>hello2</p>

    но $data[0] = '<span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>' и в данном случае
    str_replace($data[0] ,'<p>hello1</p>', $str)
    , почему то не заменяется

    а при прямом подставлении
    str_replace('<span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>' ,'<p>hello1</p>', $str)
    замена происходит
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    так наверное для начала дубиноголовый надо было сказать что значение в теге меняется.

    это все сюрпризы или еще будут?

    Код (PHP):
    1. $str = '<div><span style="color:#A9A9A9"><strong><Фирма></strong></span></div>';
    2.  
    3. $before = '<span style="color:#A9A9A9"><strong>';
    4. $after = '</strong></span>';
    5. $pattern = '|' . preg_quote($before) . '(.*?)' . preg_quote($after) . '|isu';
    6.  
    7. $new = preg_replace($pattern, '<div>new text</div>', $str);
    8. echo $new; 
     
  7. Денис9999

    Денис9999 Новичок

    С нами с:
    28 окт 2015
    Сообщения:
    5
    Симпатии:
    0
    читай внимательней, ответ не в тему

    я не меняю значение в тегах!!!!
    я меняю в строке с тегами и значениями, определенный кусок с тегами и значениями, на другой кусок с тегами и значениями!
    это '<span style="color:#A9A9A9"><strong>&lt;Фирма&gt;</strong></span>' на '<p>hello1</p>' в строке $str
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    У меня всё работает и с массивом, возможно дело в другом, может кодировка не совпадает или не видим всей картины

    Код (PHP):
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3.  
    4. $data = [
    5.     '<span style="color:#A9A9A9"><strong><Фирма></strong></span>',
    6.     '<span style="color:#A9A9A9"><strong><ВидДеятельности></strong></span>',
    7. ];
    8.  
    9. $str = '<div><span style="color:#A9A9A9"><strong><Фирма></strong></span></div>';
    10. $r= str_replace($data[0], '<p>hello</p>', $str);
    11. echo $r;
     
  9. Денис9999

    Денис9999 Новичок

    С нами с:
    28 окт 2015
    Сообщения:
    5
    Симпатии:
    0
    да, похоже дело в кодировке, видимо из базы значение приходят такие
    Спасибо!