![]() |
![]() |
cnyx 03.05.2004 - 13:59 | При проверке данных из элемента <textarea> не могу сделать так, чтобы управляющий символ переноса строки корректно обрабатывался. Не знаю как это можно прописать. В принципе можно сделать через str_replace() заменив символы переноса строки к примеру на <br>, а потом перед выводом снова заменить, но это некрасиво. Думаю можно через ereg() это сделать, вот только не знаю как. Помогите, пжалста. |
Adept 1 - 03.05.2004 - 18:25 | Два раза перечитал твой пост, но так и непонял в чем конкретно проблема с символами переноса строки... |
Deflorator 2 - 03.05.2004 - 21:14 | ему влом потом, после замены, текст с тегами править. охо-хо... |
cnyx 3 - 04.05.2004 - 09:56 |
2 2 Adept Проблема в том, что взяв текст из <textarea>, я проверяю его на наличие недопустимых символов и длину. Если этот текст не будет содержать символов переноса строки, т.е. будет вида: "тра ля ля" , то все будет хорошо. Проверка пройдет. Если сделать так: "тра ля ля" , то выдает ошибку, что у меня мол недопустимые символы. Походу именно символы конца строки и переноса каретки. Даже если учесть, что в регулярных выражениях можно делать так "a-zA-Z\"\:\;", то я не знаю, как туда включить проверку именно на "\r\n". Простое добавление этого регулярное выражение ничего не дает. 2 3 Deflorator Не влом, мне нужно красивое решение. Если можно использовать регулярные выражения, то зачем самому писать функцию, которая будет перебором проверять данные? |
cnyx 4 - 04.05.2004 - 10:13 | Сделал вручную, "\r\n" просто заменяю на "<br>", а перед выводом опять меняю. |
cnyx 5 - 04.05.2004 - 10:18 |
Флин, а пачаму у меня символ "-" не прокатывает? Вот такое у меня регулярное выражение: ereg('^[a-zA-Z0-9_\.\,\ \:\;\-\=\|\+\'\"\<\>]*$',$varforval) Т.е. вроде должен проходить, а не проходит. |
Cool 6 - 05.05.2004 - 00:11 | Не стоит вручную делать, есть функция хорошая nl2br |
Adept 7 - 05.05.2004 - 09:27 | \r?\n |
cnyx 8 - 05.05.2004 - 11:32 |
2 Cool Замечание: Starting with PHP 4.0.5, nl2br() is now XHTML compliant. All versions before 4.0.5 will return string with '<br>' inserted before newlines instead of '<br />'. Это не ведет к искривлению дизайна? |
cnyx 9 - 05.05.2004 - 11:37 |
2 Adept Уже сделал, переделывать не буду =( |
DIVЕR 10 - 05.05.2004 - 14:04 |
Cnyx, ты слишком много внимания уделяешь действительно мелочам. Уж насколько я придирчив даже к тому как будет выглядеть html-код, до такого ещё не доходил =))))) (и <br /> по-моему ничего плохого не сделает) есть модификатор m для PCRE-регэкспов (функции, начинающиеся на preg_), который означает multiline: m (PCRE_MULTILINE) By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless D modifier is set). This is the same as Perl. When this modifier is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m modifier. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect. Это подойдёт для того, что подсказал Adept. Также советую тебе не забывать, что регэкспы ОЧЕНЬ медленно работают по сравнению с обычными замещениями подстрок или символов. Иногда для загруженного сайта (портала какого-нибудь) лучше вставить десяток str_replace, чем эквивалентное регулярное выражение... |
cnyx 11 - 05.05.2004 - 14:14 |
2 DIVЕR Понял, буду знать. Сайт будет точно не нагруженый. Но для проверки данных на наличие допустимых символов проверку проще сделать с помощью регулярных выражений. Вроде. |
kubanoid 12 - 11.05.2004 - 19:11 |
при upload textarea: $str=str_replace('/r/n','/n',$str); $str=str_replace('/r','/n',$str); $str=str_replace('/n','<br>',$str); при выводе в textarea $str=str_replace('<br>','/n',$str); Классика. или автор топика фанат регэкспов? |
DIVЕR 13 - 11.05.2004 - 22:12 | Я пример Кубаноида не пробовал, но сугубо AFAIK - во-первых надо ставить обратные слэши и, во-вторых, надо ставить кавычки, а не апострофы, чтобы какие-либо замещения типа \<smth>, а также подстановка значений переменных работали.... |