но в случае с пробелом замена 1 и более пробела подряд работает
$str= preg_replace('/(\s+)/i', ' ', $str);
а вот
$str= preg_replace('/(\t+)/i', ' ', $str);
$str= preg_replace('/(\n+)/i', ' ', $str);
нет.
что подскажите?
и как правильно записать шаблон замены?
Спустя 4 часа, 3 минуты, 30 секунд (13.01.2011 - 18:21) totje написал(а):
неужели никто не может подсказать?
Спустя 10 минут, 24 секунды (13.01.2011 - 18:31) inpost написал(а):
/ius (в твоём случае это s), тогда можно /s охватывать одновременно как пробелы, так и перенос строки и табуляцию.
Спустя 5 минут, 34 секунды (13.01.2011 - 18:37) DySprozin написал(а):
totje
не \n, а \r\n (;
не \n, а \r\n (;
$str= preg_replace('/([\r\n]+)/i', ' ', $str);
Спустя 21 минута, 3 секунды (13.01.2011 - 18:58) totje написал(а):
Цитата |
$str= preg_replace('/([\r\n]+)/i', ' ', $str); |
спасибо, но не работает(
inpost
ну мне все под одно не надо.
нужно, чтобы 2 и более пробела заменялись одним, 2 и более переноса - одним переносом итд.
Спустя 19 часов, 29 секунд (14.01.2011 - 13:59) totje написал(а):
посоветуйте еще что-нибудь или поделитесь ссылкой на какой-нибудь урок типа "не даем флудерам постить одни переносы строк". сколько гуглил, ничего не нашел путного.
Спустя 1 час, 43 минуты, 27 секунд (14.01.2011 - 15:42) inpost написал(а):
totje
(/s){2,}
(/s){2,}
Спустя 5 часов, 15 минут, 1 секунда (14.01.2011 - 20:57) totje написал(а):
inpost
Warning: preg_replace() [function.preg-replace]: Unknown modifier ')' in этой строке
строка такая:
как правильно записать полностью?
да и вообще, пробелы проблем давно не представляют, что делать с переносом строк?
ни на \r\n, ни на \r, ни на \n не реагирует выражение..
пытаюсь так:
Warning: preg_replace() [function.preg-replace]: Unknown modifier ')' in этой строке
строка такая:
$str= preg_replace('/(/s){2,}/i', ' ', $str);
как правильно записать полностью?
да и вообще, пробелы проблем давно не представляют, что делать с переносом строк?
ни на \r\n, ни на \r, ни на \n не реагирует выражение..
пытаюсь так:
$str= preg_replace('/(\r+)/i', ' ', $str);
$str= preg_replace('/(\r\n+)/i', ' ', $str);
$str= preg_replace('/(\n+)/i', ' ', $str);
Спустя 9 минут, 5 секунд (14.01.2011 - 21:06) inpost написал(а):
я же написал:
/[/s]{2,}/s (МОДИФИКАТОР s), читай про него...
/[/s]{2,}/s (МОДИФИКАТОР s), читай про него...
Спустя 1 час, 11 минут, 52 секунды (14.01.2011 - 22:18) totje написал(а):
да я же прошу показать, как правильно вставить это условие в ф-цию еще с самого первого поста..
опять Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in
в строке
как правильно записать то??
опять Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in
в строке
$str= preg_replace('/[/s]{2,}/s', '123', $str);
как правильно записать то??
Спустя 1 час, 57 минут, 51 секунда (15.01.2011 - 00:16) inpost написал(а):
Используй обрамление функции так: || или ##
А ещё лучше зайти сюда и посмотреть, как правильно этот мета-символ пишется: http://irbis-team.com/15/20/3
А ещё лучше зайти сюда и посмотреть, как правильно этот мета-символ пишется: http://irbis-team.com/15/20/3
Спустя 8 часов, 37 минут, 30 секунд (15.01.2011 - 08:53) totje написал(а):
ну за их урок спасибо, но проблема все еще осталась с самим распознованием символов. или вообще тут уже дело в их существовании?
в бд посты сохраняются именно так как они были в textarea, уже с видимыми переносами, а не в строку с \r\n итд. это нормально? может быть, проблема в этом?
строковая ф-ция, кстати, все находит и заменяет.. в данном случае 2 переноса на 1
$str= preg_replace('#[\r\n]+#s', ' ', $str); // не работает
$str= preg_replace('#[\n]+#s', ' ', $str); // не работает
$str= preg_replace('#[\r]+#s', ' ', $str); // не работает
$str= preg_replace('#[\s]+#s', ' ', $str); // работает, видит все пробелы идущие подряд>1, заменят их одним
в бд посты сохраняются именно так как они были в textarea, уже с видимыми переносами, а не в строку с \r\n итд. это нормально? может быть, проблема в этом?
$str= str_replace('\r\n\r\n', '\r\n', $str);
строковая ф-ция, кстати, все находит и заменяет.. в данном случае 2 переноса на 1
Спустя 1 день, 5 минут, 8 секунд (16.01.2011 - 08:58) totje написал(а):
$str= preg_replace('#[/s]+#s', ' ', $str);
тоже не работает.
кто-нибудь имеет возможность предоставить в полном виде ф-цию, которая бы заменяла 2 и более переноса строк одним, или это так сложно?)
Спустя 1 час, 42 минуты (16.01.2011 - 10:40) twin написал(а):
$str= preg_replace('#[\s]{2,}#s', ' ', $str);
Спустя 25 минут, 56 секунд (16.01.2011 - 11:06) totje написал(а):
twin
ну вот ведь выше я писал:
с пробелами все нормально работает, с переносом строк - нет
ну вот ведь выше я писал:
$str= preg_replace('#[\s]+#s', ' ', $str); // работает, видит все пробелы идущие подряд>1, заменят их одним
с пробелами все нормально работает, с переносом строк - нет
Спустя 15 минут, 20 секунд (16.01.2011 - 11:22) Snus написал(а):
totje
Зачем тебе несколько подряд идущих пробелов убирать preg_match'ем? Попробуй
Зачем тебе несколько подряд идущих пробелов убирать preg_match'ем? Попробуй
$str = trim($str);
Спустя 23 минуты, 4 секунды (16.01.2011 - 11:45) totje написал(а):
Snus
а зачем нужна строка вида "2 %кучапробелов% 2"?
трим, насколько мне известно, обрезает пробелы по краям, к тому же, он и так включен в обработку постов.
и я хз-й раз повторюсь - ПРОБЕЛЫ меня не волнуют, меня волнуют ПЕРЕНОСЫ СТРОК, чтобы не было на выходе строк вида:
"
ололо, я сломаю ваш скролл
"
а зачем нужна строка вида "2 %кучапробелов% 2"?
трим, насколько мне известно, обрезает пробелы по краям, к тому же, он и так включен в обработку постов.
и я хз-й раз повторюсь - ПРОБЕЛЫ меня не волнуют, меня волнуют ПЕРЕНОСЫ СТРОК, чтобы не было на выходе строк вида:
"
ололо, я сломаю ваш скролл
"
Спустя 5 минут, 36 секунд (16.01.2011 - 11:50) Snus написал(а):
totje
Делай проверку
Делай проверку
if(!empty($str)){
...
}
Спустя 1 час, 10 минут, 24 секунды (16.01.2011 - 13:01) totje написал(а):
Snus
такая проверка тоже имеется
да и куча переносов + к тому же с символом в конце явно не сойдут за пустую строку)
такая проверка тоже имеется
да и куча переносов + к тому же с символом в конце явно не сойдут за пустую строку)
Спустя 2 минуты, 50 секунд (16.01.2011 - 13:04) Snus написал(а):
totje
$str = trim($str);
if(!empty($str)){
...
}
Спустя 1 час, 9 минут, 40 секунд (16.01.2011 - 14:13) totje написал(а):
Snus
ну а если подставить туда что-то типа
"
1
1
"
то ведь такая строка и пройдет, разве нет?
ну а если подставить туда что-то типа
"
1
1
"
то ведь такая строка и пройдет, разве нет?
Спустя 1 минута, 45 секунд (16.01.2011 - 14:15) Snus написал(а):
totje
Так ты построчно читай. И выведет тебе он:
Так ты построчно читай. И выведет тебе он:
1
1
Спустя 23 минуты, 32 секунды (16.01.2011 - 14:39) totje написал(а):
Snus
вот тут я что-то упустил/поканезнаю, видимо, так что можно поподробнее про "построчно читай"?) этокак?
вот тут я что-то упустил/поканезнаю, видимо, так что можно поподробнее про "построчно читай"?) этокак?
Спустя 12 минут, 13 секунд (16.01.2011 - 14:51) Snus написал(а):
totje
Ты откуда эти данные берешь? Из файла текстового или БД?
Ты откуда эти данные берешь? Из файла текстового или БД?
Спустя 5 часов, 13 минут, 58 секунд (16.01.2011 - 20:05) totje написал(а):
Snus
из базы..
из базы..
Спустя 6 минут, 9 секунд (16.01.2011 - 20:11) Snus написал(а):
К примеру так:
$exp = explode("\n", $str);
foreach($exp as $line){
}
Спустя 22 минуты, 47 секунд (16.01.2011 - 20:34) totje написал(а):
Snus
да вот к циклам не очень хотелось прибегать..
я правильно построил эту ф-цию? а то сейчас не здоровится и как-то не особо вникается..
при посте чего-то типа:
"111
222"
результат вида:
"PERENOSSTROKI111
222"
иными словами - не работает. с \n тоже самое.
да вот к циклам не очень хотелось прибегать..
я правильно построил эту ф-цию? а то сейчас не здоровится и как-то не особо вникается..
$exp= explode("\r\n", $str);
$str= '';
foreach($exp as $line){
$str= $str.'PERENOSSTROKI'.$line;
}
echo $str;
при посте чего-то типа:
"111
222"
результат вида:
"PERENOSSTROKI111
222"
иными словами - не работает. с \n тоже самое.
Спустя 1 минута, 58 секунд (16.01.2011 - 20:36) inpost написал(а):
totje
Зачем тебе регулярка, если ты зарание знаешь, что собираешься вырезать? Используй str_replace!
Snus
Trim только в начале и в конце убирает, а по смыслу надо убрать в середине!
Зачем тебе регулярка, если ты зарание знаешь, что собираешься вырезать? Используй str_replace!
Snus
Trim только в начале и в конце убирает, а по смыслу надо убрать в середине!
Спустя 4 минуты, 30 секунд (16.01.2011 - 20:40) totje написал(а):
inpost
да это пока единственный выход, но там ведь нельзя так гибко настроить шаблон(или разве можно??), а учитывая то, что допустимый размер поста 1000символов, то это жесть получится типа:
или в цикл, что все равно.
для меня загадка, почему эта строковая ф-ция определяет перенос, а никакой explode, preg_replace или даже тупо сравнение каждого символа с переносом - нет.
да это пока единственный выход, но там ведь нельзя так гибко настроить шаблон(или разве можно??), а учитывая то, что допустимый размер поста 1000символов, то это жесть получится типа:
<...>
$str= str_replace('\r\n\r\n\r\n\r\n\r\n\r\n', '\r\n\r\n\r\n\r\n', $str);
$str= str_replace('\r\n\r\n\r\n\r\n', '\r\n\r\n', $str);
$str= str_replace('\r\n\r\n', '\r\n', $str);
или в цикл, что все равно.
для меня загадка, почему эта строковая ф-ция определяет перенос, а никакой explode, preg_replace или даже тупо сравнение каждого символа с переносом - нет.
Спустя 53 минуты, 47 секунд (16.01.2011 - 21:34) Snus написал(а):
totje
А если так
А если так
$str = str_replace(array(' ',"\t"), array(' ',' '), $str);
Спустя 11 часов, 7 минут, 4 секунды (17.01.2011 - 08:41) totje написал(а):
Snus
неа, но вот так:
сойдет, думаю:)
неа, но вот так:
$str= str_replace(array('\r\n\r\n\r\n\r\n\r\n\r\n','\r\n\r\n\r\n\r\n\r\n','\r\n\r\n\r\n\r\n','\r\n\r\n\r\n','\r\n\r\n'), array('\r\n','\r\n','\r\n','\r\n','\r\n'), $str);
сойдет, думаю:)