[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match_all не могу разобраться
Нет восети
Помогите, пожалуйста, никак не могу понять как работает функция preg_match_all, но нутром чую, что мне нужна она :D

задача: вытащить из переменный все английские слова (или буквы)

код (второй день изучаю php - пока ничерта не знаю):

preg_match_all('[a-Z]',$_REQUEST['adress'], $ok);
while($i<count($ok[1])) { echo $ok[1][$i++]."n"; }
?>


при var_dump ($ok); выдает мне array(1) { [0]=> array(0) { } }
почему и как правильно?



Спустя 56 минут, 16 секунд (16.05.2011 - 16:04) Нет восети написал(а):
я знаю, что вы знаете, что это легко, но у меня от этого функция легче не пишется, про рег выражения читала - не помогло sad.gif

Спустя 1 минута, 13 секунд (16.05.2011 - 16:05) DedMorozzz написал(а):
'[a-Z]' = '#[a-Z]+#'

Спустя 36 минут, 50 секунд (16.05.2011 - 16:42) Нет восети написал(а):
DedMorozzz, не получилось

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: range out of order in character class at offset 3 in Z:\home\localhost\www\url.php on line 39 (здесь первая строка)

как я понимаю ему не нравится теперь моя переменная с говорящим именем $ok
или это он заранее на вывод ругается?


Спустя 3 минуты, 28 секунд (16.05.2011 - 16:46) DedMorozzz написал(а):
ой smile.gif
[a-Z] не так, а вот так [A-z]

Спустя 12 минут, 23 секунды (16.05.2011 - 16:58) Нет восети написал(а):
DedMorozzz спасибо
но так тоже не как - Notice: Undefined offset: 1 in Z:\home\localhost\www\url.php on line 40 и еще Notice: Undefined variable: i in Z:\home\localhost\www\url.php on line 40
вторую проблему, кажется решила путем подстановки $i=0; перед preg_match_all
но вывод мне все равно не покорился

я видимо с массивом не правильно работаю?

Спустя 5 минут, 40 секунд (16.05.2011 - 17:04) DedMorozzz написал(а):
preg_match_all('#[A-z]+#' ,'asdada123123asdaszasda11', $ok);
print_r($ok);

Если всё норм выведет, значит ищи ошибку в другом месте. Ибо так - всё нормально

Спустя 13 минут, 59 секунд (16.05.2011 - 17:18) Нет восети написал(а):
Array ( [0] => Array ( [0] => asdada [1] => asdaszasda ) )
вывел,
подставила в свое - вывел
Array ( [0] => Array ( [0] => yt [1] => ryyy ) )

print_r я проверила, но вывод черзе echo мне не покорился:
echo $ok[0];
echo $ok[1];
по первому он выводит Array
а по втрому
Notice: Undefined offset: 1 in Z:\home\lo...

получается это не массив или какой-то хитропопый массив???

Спустя 9 минут, 19 секунд (16.05.2011 - 17:27) alex12060 написал(а):
Array ( [0] => Array ( [0] => yt [1] => ryyy ) ) 


Это вложенный вид массивов.
У тебя это (Выделенное жирным):
Array ( [0] => Array ( [0] => yt [1] => ryyy ) )

1 часть массива, с 0 индексом.

А второе:
Array ( [0] => Array ( [0] => yt [1] => ryyy ) )

Это вложенный массив.
Поэтому, чтобы смотреть, нужно вызвать так:

echo $ok[0][1];

Спустя 4 минуты, 4 секунды (16.05.2011 - 17:31) Нет восети написал(а):
alex12060, урааааааааааааааааааа!! заработало =)))) спасибо =)))

и последний вопрос =))) у меня будет изменятся только вложенный массив? т.е. у меня будет $ok[0][i] и в каком случае изменится первая часть массива на $ok[1][i]?

Спустя 10 минут, 56 секунд (16.05.2011 - 17:42) alex12060 написал(а):
Цитата
меня будет изменятся только вложенный массив?


Да, но это зависит от многих факторов. Могут быть и разные вложенности. Советую почитать про эту функцию на оф сайте.

Спустя 55 минут, 57 секунд (16.05.2011 - 18:38) Нет восети написал(а):
Цитата
да

это очень хорошо =))

я читала прежде чем сюда написать чесслово, процесс повторю!

еще раз спасибо - просто спас мою семью от вечерней истерики и голодного вечера!!
Быстрый ответ:

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