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

Статус
В этой теме нельзя размещать новые ответы.

Sankaboy

Постоялец
Регистрация
1 Фев 2012
Сообщения
112
Реакции
3
Привет! Такая задача:
Есть текст "и получать уведомления на электронную почту ?". Нужно чтобы при сохранении этой записи в БД пробел между "почту ?" должен убираться. Как это сделать?
str_replace ?
За раннее спасибо!
 
Если писать чистый код то str_replace(' ?', '?', $str) будет в корне не правильно, если есть возможность изменить строчку, то лучше меня ее в самом начале.
 
$abc = "и получать уведомления на электронную почту ?";
$abc = str_replace(" ?", "?", $abc);
 
можно регуляркой:
PHP:
$t= "и получать уведомления на электронную почту ?";
echo preg_replace("/\s+([\?]+)/",'${1}',$t);
если пробел и спецсимвол 100% находятся в конце строки, то лучше так:
PHP:
echo preg_replace("/\s+([\?]+)$/",'${1}',$t);

в квадратных скобках перечисляешь все спецсимволы, перед которыми надо удалять пробел(обязательно с обратным слешем перед каждым, как в примере)

Кстати, удаляются не только пробелы, но и символы табуляции и символы переноса строки. Если табуляцию и перенос строки не надо удалять - замени \s на пробел
 
str_replace вроде как побыстрее чем preg_replace работает. Так что если входящая строка не изменяется - лучше без регулярки делать )
 
str_replace - этим я и воспользовался. Спасибо!
 
str_replace вроде как побыстрее чем preg_replace работает. Так что если входящая строка не изменяется - лучше без регулярки делать )

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

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

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

LA уменьшился.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху