Замена #1075 и. т.п. на php - как сделать?

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

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

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Нужна замена в переменной вcех вхождений символов вида &#xxxx на соответсвующий символ .
     
  2. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Код:
    $s = 'бгогапр&#1080';
    $res = ereg_replace('&#1075','x', $s);
     
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Не сделаешь это регуляркой (можно и регуляркой, но через callback-функцию).
    Проще str_replace по массиву.

    jik, отвыкай от ereg* - это уже прошлое.
     
    Neow15ard нравится это.
  4. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Не совсем то..
    исходник к примеру
    HTML:
    "потолок & #1042;ибропласт и Битопласт и деш& #1105;& #1074;ые & #1074;"
    (Убрать пробел между & # при работе)

    в нем необходимо заменить все эти д..е тэги на буквы.Пробел фиг с ним его как понятно(&nbsp).
    а вот буквы как?.
    Нужен практический совет...я уже 3 час копаю но у меня мозг с регулярками не дружит (((
    как хотябы выдирать тэги...таблицу замены то я накатаю..

    ЗЫ. Написал str_replace на каждый тег.
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Суровый ты парень :D
    str_replace умеет работать с массивами - скорми ей текст и 2-а массива (с тэгами и их заменой).
     
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    я поначалу не понял, в каком виде хранятся данные в строке. Тогда такой вариант:

    Код:
    $str = preg_replace('/&#(\\d+);/e', 'code2xxx($1)', $str);
    только надо определиться, в какую кодировку конвертировать.
    Функцию code2xxx реализовать как code2utf или как code2win1251.

    Спасибо, буду иметь ввиду, я не особо слежу за php.
     
    Neow15ard нравится это.
  7. tmcdos

    tmcdos Создатель

    Регистр.:
    26 мар 2009
    Сообщения:
    10
    Симпатии:
    1
    PHP:
    $str html_entity_decode(preg_replace('/&\s*#/','&#',$str),ENT_QUOTES,'cp1251');
    или
    $str 
    html_entity_decode(preg_replace('/&\s*#/','&#',$str),ENT_QUOTES,'UTF-8');
     
    Neow15ard нравится это.
Статус темы:
Закрыта.