Javascript.RU

PHP-функция: trim

Пермалинк: http://javascript.ru/php/trim

Javascript:

function trim ( str, charlist ) {
    // Strip whitespace (or other characters) from the beginning and end of a string
    // +   original by: Ilia Kantor (http://javascript.ru)

    charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

Примеры:

ltrim('    Kevin van Zonneveld    ');
'Kevin van Zonneveld'


Автор: Phobos (не зарегистрирован), дата: 2 марта, 2009 - 23:36
#permalink

Спасибо за функции! Обалденный сайт!

Однако в этом примере возможно где-то ошибка.
Я использую код этой функции для проверки вводимой в поле информации при регистрации пользователя (email и прочие, т.к. часто пользователи по ошибке могут ввести пробел, а потом долго маятся - что не так).

Так вот ошибка в следующем: если значение (value) в поле input начинается или заканчивается на букву "s" (именно маленькую), то она обрезается.

Например, если записать "sPhobos" в поле, то после применения описанной выше функции получится "Phobo".

Пока заметил только это.

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


Автор: Phobos (не зарегистрирован), дата: 2 марта, 2009 - 23:53
#permalink

Странно. Прочитал про символ \s в рег. выражениях. Поидее это и есть пробел.

\s
Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed.
Эквивалентно [ \f\n\r\t\v].

Однако, удалив его проблема исчезла.

В моём случае хватило исправить строку

= !charlist ? ' \s\xA0'

на

= !charlist ? ' \xA0'

тоесть осталось знак пробела, как таковой, и символ hex \xA0 ( честно, не в курсе какой это именно )) . Вроди от кодировки зависит. может тоже лучше убрать.)

Однако не знаю, на сколько я прав в своих действиях...


Автор: ArtemkA[DeveloP.Pro] (не зарегистрирован), дата: 26 октября, 2009 - 13:13
#permalink

Проблема с вырезанием символа s решается очень просто. Нужно изменить ' \s\xA0' на ' \\s\\xA0'


Автор: stopkran, дата: 23 декабря, 2009 - 13:15
#permalink

Очень сложно. Из-за этого даже ошибки (внутри кавычек надо экранировать слэши, как подсказал ArtemkA). Всё-таки trim чаще всего нужен именно как trim (без charlist):

str = str.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");

за \xa0 отдельное спасибо, сам бы заранее не догадался.


Автор: EugenyK, дата: 8 апреля, 2010 - 20:23
#permalink

Есть ещё несколько реализаций php-функции trim, которые в зависимости от длины строки и кол-ва используемых символов, сильно разнятся по времени исполнения. Особенно интересно, что максимально быстро работает функция, не использующая регулярные выражения. Смотреть тут


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
7 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum