Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: проверить корректность входных данных
Форумы портала PHP.SU » PHP » Регулярные выражения » проверить корректность входных данных

Страниц (2): [1] 2 »
 

1. romanov - 29 Ноября, 2011 - 18:44:40 - перейти к сообщению
Буду очень признателен если поможете разобраться со следующей задачей: дана входная

строка н-р: '{()}{}' надо проверить корректность открытия и закрытия скобок.

Если скобки закрываются симметрично '{()}' , то тут вопросов не возникает, а если так как

описано выше то......???
2. Данил_123 - 29 Ноября, 2011 - 18:49:05 - перейти к сообщению
Не понял, в чем смысл?
3. Maxi - 29 Ноября, 2011 - 18:54:50 - перейти к сообщению
Можно посчитать количество знаков в строке, и если количество "(" будет равно количеству ")" то всё ок, если нет, добавить один нехватающий символ в конец или куда надо. Тут просто надо условие симетрии, так я не знаю что и как именно.
4. DeepVarvar - 29 Ноября, 2011 - 18:56:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo (stristr($in,"{()}")) ? "True!" : "False!";
???
5. romanov - 29 Ноября, 2011 - 18:57:07 - перейти к сообщению
если можете опишите то что вы написали, причем чем тут сравнение символов
(Добавление)
дело в том что надо проверить корректность открытых и закрытых скобок, во входной строке, а не просто вернуть строку
6. DeepVarvar - 29 Ноября, 2011 - 19:48:01 - перейти к сообщению
Дайте реальную строку.
7. romanov - 29 Ноября, 2011 - 19:58:24 - перейти к сообщению
вот реальная строка '{()}' == true здесь передаются симметричные скобки, здесь проблем нет, вот когда передается строка такого вида {()}{} здесь проверить ее намного сложнее, я не знаю как.
Такая строка {(})== false , вложенность скобок неверная.
8. DeepVarvar - 29 Ноября, 2011 - 20:01:08 - перейти к сообщению
"Скобочных" последовательностей в строке может быть сколько угодно или только одна?
9. romanov - 29 Ноября, 2011 - 20:03:17 - перейти к сообщению
вот варианты:

1. ()==true

2. {()}==true

3. {()}{}==true

4. (())==true

5. {({({({()})})})}==true

6. {(})==false
10. DeepVarvar - 29 Ноября, 2011 - 20:03:47 - перейти к сообщению
Для одной я вам написал код, только поменяйте условие наоборот.
Можно еще через регулярку, при условии что строка состоит только из этой последовательности:
PHP:
скопировать код в буфер обмена
  1. echo (preg_match('/^\{\(\)\}$/',$str)) ? "Ok" : "Fail";

(Добавление)
Сек
11. romanov - 29 Ноября, 2011 - 20:11:50 - перейти к сообщению
большое вам спасибо, но вот только надо реализовать универсальную функцию например isCorrect ('{(}) '), если передать неверную последовательность и внутри функции выполнить ваш код echo (preg_match('/^\{\(\)\}$/',$str)) ? "Ok" : "Fail"; то функция вернет ok хотя на самом деле последовательность неверная. оба ваших варианта сравнивают эти последовальности друг с другом .
12. DeepVarvar - 29 Ноября, 2011 - 20:25:06 - перейти к сообщению
Да я понял что надо, самому интересно стало, сижу ковыряю. Закатив глазки
13. romanov - 29 Ноября, 2011 - 20:29:48 - перейти к сообщению
как вариант можно разделить семметричную последовательность пополам и сравнивать первой символ первой подстроки с первым с конца символом второй подстроки и так дальше, но это если только пос-ть семметричная
14. DeepVarvar - 29 Ноября, 2011 - 20:49:05 - перейти к сообщению
Симметричность я уже осилил. Думаю насчет несимметрии.
15. romanov - 29 Ноября, 2011 - 20:50:30 - перейти к сообщению
если придумаете можете выложить, мне очень надо

 

Powered by ExBB FM 1.0 RC1