[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярка не правильно считает :D
DmitryOpalev
Здрасти! :)
Вот скрипт:
<?php
$str = "x*x*x*х"; // x в степени
preg_match("#(x)#",$str,$ar);
echo count($ar);
?>

Должно выдвавать кол-во переменных в массиве (т.е. 4), а всегда выдает 2, будь x`ов хоть 4, хоть 7... только при $str = "x"; возвращает верно - 1.
Что не правильного в регулярке?



Спустя 3 минуты, 5 секунд (28.12.2010 - 22:18) T1grOK написал(а):
Читай мануал.
preg_match - прекращает работу при первом вхождении. Для вычисления всех совпадений используй preg_match_all.

Спустя 40 минут, 25 секунд (28.12.2010 - 22:58) DmitryOpalev написал(а):
Спасибо и, хоть и выдал страшилку:
Array ( [0] => Array ( [0] => x [1] => x [2] => x [3] => x ) [1] => Array ( [0] => x [1] => x [2] => x [3] => x ) )

разобрался :)
echo count($ar[0]);

Спустя 4 минуты, 8 секунд (28.12.2010 - 23:03) DmitryOpalev написал(а):
А почему в том случае выдавал две переменные, вмсето одной? Ведь он сразу увидел совпадение

Спустя 12 часов, 31 минута, 26 секунд (29.12.2010 - 11:34) T1grOK написал(а):
Результат регулярного выражения в массиве - шаблон + подмаска. Вот читай: справочник preg_match_all

Спустя 40 минут, 5 секунд (29.12.2010 - 12:14) Basili4 написал(а):
DmitryOpalev
тут вообще не нужны регулярки. substr-count хватит

http://www.php.su/functions/?substr-count

Спустя 15 дней, 12 часов, 17 минут, 49 секунд (15.01.2011 - 00:32) Snus написал(а):
Цитата (DmitryOpalev @ 28.12.2010 - 19:15)
<?php
$str = "x*x*x*х"; // x в степени
preg_match("#(x)#",$str,$ar);
echo count($ar);
?>


В твоем случае лучше так разбивать на массив
$exp = explode('*', $str);


Спустя 1 минута, 4 секунды (15.01.2011 - 00:33) inpost написал(а):
Snus
зачем вообще разбивать? Тут просто подсчёт был и всё

Спустя 25 минут, 19 секунд (15.01.2011 - 00:58) Snus написал(а):
inpost
echo count($exp);

=)


_____________
Курс валют
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.