Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непонятно с preg_match_all
 
 автор: kilovad   (12.06.2009 в 01:50)   письмо автору
 
 

Доброго времени суток, такая проблема:


preg_match_all("/hotels\/\d*\.html/",$listhref,$test); 


По идеии в массив $test должни были попасть все совпавшие строки, но при обращении к массиву по индексам приводит к ошибки, что такой элемент не существует, хотя функция print_r() прекрасно выводит массив с правиььным кол-во элементов, что не так?

  Ответить  
 
 автор: 45645   (12.06.2009 в 02:49)
 
   для: kilovad   (12.06.2009 в 01:50)
 

Скорее всего просто неправильно обращаетесь к нужному элементу. Покажите дамп массива и Ваши попытки обратиться к нему.

  Ответить  
 
 автор: kilovad   (12.06.2009 в 03:17)   письмо автору
 
   для: 45645   (12.06.2009 в 02:49)
 


preg_match_all("/hotels\/\d*\.html/",$listhref,$test); 
print_r($test);
echo $test[12];


Вот что выдает:
Array ( [0] => Array ( [0] => hotels/22061.html [1] => hotels/75290.html [2] => hotels/75534.html [3] => hotels/75289.html [4] => hotels/75533.html [5] => hotels/75255.html [6] => hotels/22062.html [7] => hotels/76477.html [8] => hotels/77059.html [9] => hotels/75404.html [10] => hotels/78005.html [11] => hotels/75300.html [12] => hotels/75288.html [13] => hotels/75237.html [14] => hotels/61408.html) )
Notice: Undefined index: 12 in C:\wamp\www\phpsite\test.php on line 31

  Ответить  
 
 автор: Trianon   (12.06.2009 в 10:43)   письмо автору
 
   для: kilovad   (12.06.2009 в 03:17)
 

тег <pre> поставьте перед выдачей - понятно станет.

  Ответить  
 
 автор: kilovad   (12.06.2009 в 14:53)   письмо автору
 
   для: Trianon   (12.06.2009 в 10:43)
 

Хм, здесь это сделать?

  Ответить  
 
 автор: Trianon   (12.06.2009 в 16:28)   письмо автору
 
   для: kilovad   (12.06.2009 в 14:53)
 

У себя.
перед print_r;

  Ответить  
 
 автор: OLi   (12.06.2009 в 19:03)   письмо автору
 
   для: Trianon   (12.06.2009 в 16:28)
 

Можете попробовать через цикл foreach {}

  Ответить  
 
 автор: kilovad   (12.06.2009 в 20:38)   письмо автору
 
   для: OLi   (12.06.2009 в 19:03)
 

Оказалось все проще, оказывается на выходе массив двумерный, надо просто после preg_match добавить
$test=$test[0];

  Ответить  
 
 автор: AcidTrash   (14.06.2009 в 21:29)   письмо автору
 
   для: kilovad   (12.06.2009 в 20:38)
 

А еще проще, как было сказано выше, вывести результат через print_r и сразу все станет ясно.

  Ответить  
 
 автор: kilovad   (16.06.2009 в 02:52)   письмо автору
 
   для: AcidTrash   (14.06.2009 в 21:29)
 

Если не понтяно из моего первого поста, я это и делал!

  Ответить  
 
 автор: AcidTrash   (16.06.2009 в 22:22)   письмо автору
 
   для: kilovad   (16.06.2009 в 02:52)
 

хотя функция print_r() прекрасно выводит массив с правиььным кол-во элементов, что не так?
Даже не знаю что сказать... Если вы ничего не видите.
Ну судя по всему уже увидели.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования