Удаление лишних пробелов перед знаками.

Тема в разделе "PHP", создана пользователем Sankaboy, 31 май 2012.

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

    Sankaboy Постоялец

    Регистр.:
    1 фев 2012
    Сообщения:
    112
    Симпатии:
    3
    Привет! Такая задача:
    Есть текст "и получать уведомления на электронную почту ?". Нужно чтобы при сохранении этой записи в БД пробел между "почту ?" должен убираться. Как это сделать?
    str_replace ?
    За раннее спасибо!
     
  2. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    Если писать чистый код то str_replace(' ?', '?', $str) будет в корне не правильно, если есть возможность изменить строчку, то лучше меня ее в самом начале.
     
    Sankaboy нравится это.
  3. danjae

    danjae Постоялец

    Регистр.:
    20 фев 2008
    Сообщения:
    71
    Симпатии:
    7
    $abc = "и получать уведомления на электронную почту ?";
    $abc = str_replace(" ?", "?", $abc);
     
    Sankaboy нравится это.
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    можно регуляркой:
    PHP:
    $t"и получать уведомления на электронную почту ?";
    echo 
    preg_replace("/\s+([\?]+)/",'${1}',$t);
    если пробел и спецсимвол 100% находятся в конце строки, то лучше так:
    PHP:
    echo preg_replace("/\s+([\?]+)$/",'${1}',$t);
    в квадратных скобках перечисляешь все спецсимволы, перед которыми надо удалять пробел(обязательно с обратным слешем перед каждым, как в примере)

    Кстати, удаляются не только пробелы, но и символы табуляции и символы переноса строки. Если табуляцию и перенос строки не надо удалять - замени \s на пробел
     
    Sankaboy нравится это.
  5. AutoRun

    AutoRun Создатель

    Регистр.:
    8 окт 2011
    Сообщения:
    22
    Симпатии:
    5
    str_replace вроде как побыстрее чем preg_replace работает. Так что если входящая строка не изменяется - лучше без регулярки делать )
     
  6. Sankaboy

    Sankaboy Постоялец

    Регистр.:
    1 фев 2012
    Сообщения:
    112
    Симпатии:
    3
    str_replace - этим я и воспользовался. Спасибо!
     
  7. alex.kirov

    alex.kirov Создатель

    Регистр.:
    18 авг 2010
    Сообщения:
    29
    Симпатии:
    7
    Не вроде, а реально быстрее. Я у себя на сайте часть ссылок перед выводом пользователю обрабатывают регулярками. чтобы не запускать все регулярки на каждом сообщении я делаю

    if (preg_match('/href/',$str))
    {
    /// run many regexp
    }

    после того как я сделал
    if (str_pos(.....))
    {
    /// run many regexp
    }

    LA уменьшился.
     
Статус темы:
Закрыта.