За последние 24 часа нас посетили 21542 программиста и 1060 роботов. Сейчас ищут 677 программистов ...

Удаление спец. символов

Тема в разделе "PHP для новичков", создана пользователем joost, 3 май 2007.

  1. joost

    joost Guest

    Как из строки удалить спец. символы типа ™, ©
     
  2. joost

    joost Guest

    htmlspecialchars() и htmlentities() не помагают! или я их не правильно использую?
     
  3. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    joost
    1. Определяем список допустимых символов
    2. Удаляем все недопустимые.

    Например, если допустимы только буквы (русские и латинские) и цифры:
    PHP:
    1. <?php
    2. $newstr = preg_replace('%[^A-Za-zА-Яа-я0-9]%', '', $oldstr);
    3. ?>
    или
    PHP:
    1. <?php
    2. $newstr = preg_replace('%[^a-zа-я\d]%i', '', $oldstr);
    3. ?>
    какой больше нравится…
     
  4. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    AlexGousev

    я бы еще + добавил перед закрывающим %, чтоб он находил группы символов, а не посимвольно...
     
  5. endtime

    endtime Активный пользователь

    С нами с:
    1 май 2007
    Сообщения:
    5
    Симпатии:
    0
    Адрес:
    Москва
    а какая в этом разница?
     
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    endtime
    Функция будет работать быстрее - хотя вряд ли разница будет заметна невооруженным глазом.
     
  7. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
  8. joost

    joost Guest

    Там сказано как игнорировать (удалить) спец. символы. А как их заменить на html представление как заменяют "<", ">" и т.д. . Возможно ли это?
     
  9. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    :)

    http://php.net/htmlentities/
     
  10. joost

    joost Guest

    может я не правильно использую функцию, но символы ™, © как были так и есть.
     
  11. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    htmlentities(htmlentities($text))

    гыгык :)
     
  12. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    PHP:
    1. $a = "< - ™ - & - > - ©";
    2. print htmlentities($a, ENT_QUOTES, 'cp1251');
    все нормально работает.
    В html-source страницы:
    Код (Text):
    1. &lt; - &trade; - &amp; - &gt; - &copy;
    Если не указывать кодировку, то из этих символов не преобразовывается (tm).

    Если хотите, чтоб на экран выводилось то, что в исходнике, можно так извратиться:
    PHP:
    1. $a = "< - ™ - & - > - ©";
    2. print htmlentities(htmlentities($a, ENT_QUOTES, 'cp1251'));
    Тогда в исходнике все амперсанды заменятся на &amp;
     
  13. joost

    joost Guest

    Спасибо!
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    htmlspecialchars() ?