Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: PHP проверка в строке...  (Прочитано 2141 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 3on

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
PHP проверка в строке...
« : 13 Января 2011, 20:23:02 »
Как сделать проверку в строке на PHP???Например...есть строка - $text = "Hello(...";
функция должна проверять на наличие открытых скобок(не важно сколько), и выдавать false если какая-либо из скобок не закрыт и т.д. ???

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #1 : 13 Января 2011, 21:17:29 »
В сторону регулярных выражений копать.
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #2 : 14 Января 2011, 10:37:40 »
0. Устанавливаем некую вспомогательную переменную в 0.
1. Сканируем строку:
1.1. Если встретилась '(', переменной делаем ++.
1.2. Если встретилась ')', переменной делаем --.
2. Если после завершения сканирования наша переменная не равна 0, то баланс скобок нарушен.

P.S. Сессия, ага?
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

Оффлайн 3on

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #3 : 14 Января 2011, 19:03:11 »
Неа ... вопросы на логику...
я думал сделать - вычислить поиск в строке - (
И так-же поиск - )
и сравнивать... но получается не очень...мурня кароче...

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #4 : 14 Января 2011, 19:18:44 »
Поиск чего и в какой строке?
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн 3on

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #5 : 14 Января 2011, 19:26:01 »
Посик в строке с текстом количество  открывающих скобок и закрывающих...а потом сравнение количества открытых с закрытыми...

а если например я хочу знать сколько именно мне строк нужно закрыть(то есть те что закрыты уже не в счёт...)
как сделать ?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #6 : 14 Января 2011, 22:43:23 »
Я не понял последние два поста ТС. Но относительно вычисления количества открывающихся и закрывающихся скобок и последующее сравнение этих двух величин, не корректно. Пример: "())(". Баланс количества 0, но сказать, что здесь все открывающиеся скобки закрыты не верно.

scsiman правльно сказал как решать задачу. Только при нахождении каждой закрывающейся скобки нужно проверять, что счётчик числа не закрытых скобок не уходит в минус.

Оффлайн 3on

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #7 : 15 Января 2011, 04:11:15 »
Напиши пример кода если не трудно  :)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #8 : 15 Января 2011, 05:09:23 »
function checkBraces($str)
{
    $c = 0;
    for ($i = 0; $i < strlen($str); $i++) {
        if ($str[$i] == '(')
            $c++;
        else if ($str[$i] == ')')
            $c--;
        if ($c < 0)
           return false;
    }
    return $c == 0;
}

Оффлайн 3on

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: PHP проверка в строке...
« Ответ #9 : 15 Января 2011, 06:41:13 »
Спасибо! :)

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.