Как удалить длинное слово из строки - PullRequest
0 голосов
/ 25 февраля 2010

Если пользователь вводит действительно длинную строку, он не перемещается на вторую строку и ломает страницу на моем сайте. Как мне взять эту строку и полностью удалить ее, если это не URL?

Ответы [ 5 ]

4 голосов
/ 25 февраля 2010

Почему вы хотите удалить то, что написал пользователь? Вместо этого перенесите его на новую строку - для этого в PHP есть функция, которая называется wordwrap

3 голосов
/ 25 февраля 2010
// remove words over 30 chars long
$str = preg_replace('/\S{30,}/', '', $str);

edit: обновляется согласно предложению Тима Р, \ S соответствует любому непробельному символу (так же, как [^\s])

Также вот лучший способ включить предложение ehdv использовать wordwrap:

//This will break up the long words with spaces so they don't stretch layouts.
$str = preg_replace('/(\S{30,})/e', "wordwrap('$1', 30, ' ', true)", $str);
3 голосов
/ 25 февраля 2010

Вы действительно хотите удалить слово, или вы просто хотите, чтобы оно не делало ваш макет страницы слишком широким? Если последнее больше, чем вы хотите, рассмотрите возможность использования CSS для управления переполнением.

Например:

div { переполнение: скрытый; }

скроет любой контент, который превышает границу div.

Вот больше информации о переполнении CSS: http://www.w3schools.com/css/pr_pos_overflow.asp

0 голосов
/ 05 января 2011

@ Уход за Робом при использовании REGEX. Обзор производительности.

0 голосов
/ 26 февраля 2010

Что если это действительно длинный URL? В любом случае, почему бы просто не сопоставить текст с действительным URL-адресом, а только принять его? Проверьте некоторую информацию php-regex на URL и посмотрите, как они работают. Поваренная книга регулярных выражений также содержит хорошую главу по сопоставлению URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...