Регулярные выражения в textarea

enemy

Guest
Регулярные выражения в textarea

Здравствуйте, у меня возникла проблема с регулярными выражениями в textarea : у меня есть определённый синтаксис, которому должна соответствовать каждая строка в <textarea>
Синтаксис: /[\w]+[\,][\s][\w]+[\;]/i
Проблема заключается в том, что необходимо построчно проверить данные из textarea и если хотя бы одна строка не подлежит данному синтаксису, вывести сообщение об ошибки.

P.S. Со стороны пользователя синтаксис выглядет таким образом: слово,(пробел)слово2;(если не поледняя строка, то переход на новую строку "/n")
 

Фанат

oncle terrible
Команда форума
Проблема заключается в том, что необходимо
не понял.
ну раз необходимо проверять - проверяй.
проблема-то в чём?

передо мной таких проблем - что-то проверить - в день сто штук встаёт. я не бегаю с каждой на форкм, а сажусь и пишу.

может быть, ты соберёшься с силами, и попробуешь более внтно описать свою проблему?
 

Novar

Guest
в масив всю запись, разделяя - \n
далее перебирай и проверяй, если что выводи ошибку.
Или я тоже не понял тебя, или одно из двух :D
 

untied

Сдвинутый новичок
enemy, разреши пользователю использовать любой синтаксис и разделять слова какими угодно разделителями: запятыми, пробелами, переводами строки, табуляциями, точками с запятыми и т.д.
Разобрать слова на пары можно уже в самом скрипте на стороне сервера (ну и сохранить их, к примеру, в файл в уже требуемом формате). Тут важно лишь, чтобы слов было четное количество.

Просто легче все это запрограммировать самому, чем учить пользователей набирать слова в правильном формате: кто-то поставит лишний пробел, кто-то -- табуляцию, кто-то перепутает и влепит точку с запятой. Как показывает опыт, пользователи очень неохотно обучаются какому-либо специальному синтаксису (а начальство -- в особенности). ;)
 

enemy

Guest
Автор оригинала: Фанат
не понял.
ну раз необходимо проверять - проверяй.
проблема-то в чём?

передо мной таких проблем - что-то проверить - в день сто штук встаёт. я не бегаю с каждой на форкм, а сажусь и пишу.

может быть, ты соберёшься с силами, и попробуешь более внтно описать свою проблему?
Извините, если что-то непонятно написал.

У меня на страничке есть поле textarea, в которую посетитель должен ввести текст построчно в виде: слово,(пробел)слово2;(если строка не последняя, то переход на новую строку)
С случае если хотябы одна строка введена неверно, вывести сообщение об ошибке.
Пробовал делать таким образом:
PHP:
if(!preg_match("/[\w]+\,\s[\w]+\;/im", $admins)) {
			echo "<font color=red><b>Ошибка: Неверный синтаксис</b></font><p>";
		}
Но данный код выводит сообщение об ошибке только в случае если все строки не совпали с шаблоном, ф мне необходима вывести данный текст если хотя бы одна строка не совпала с шаблоном.
Не могли бы помочь с написанием кода?
П.С. Я начинающий в ПХП:(
 

_Asmund

Guest
Мне кажется лучшем решением в данном случе, действительно будет записать все в масив и разделив на как можно более мелки части в плоть до отдельных слов проверять. Так у тебя получится довольно компактный код. Сталкивался с подобной проблеммой. Были строки причем не с одним а несколькими типами разделителей по разбивал на отдельные подстроки и каждую проверял на то что мне нужно было. Чуть дольше придется посидеть и продумать, но зато потом работать будет веселее.

Вобщем разделяй и властвуй!

-~{}~ 25.04.05 12:15:

К стати а твой код работает так как ты описываеш именно потому, что ты запихиваеш весь техт целиком!
 

enemy

Guest
Спасибо всем! Вот нашёл выход:
PHP:
preg_match_all("/((?:.)+)\n*/i", $text, $arrtext);
for($i=0; $i<count($arrtext[1]); $i++) {
	if(!preg_match('/[\w]+(?:\s|\,|\;)+[\w]+/i', $arrtext[1][$i])) {
					$numofstr = $i+1;
					echo "<font color=red><b>Ошибка: Неверный синтаксис данных (проверьте $numofstr. строку)</b></font><p>";
					break;
				}
 
Сверху