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

Форум PHP

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

 

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

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

тема: узнать индекс массива
 
 автор: mehelson   (20.12.2006 в 08:16)   письмо автору
 
 

Здравствуйте !

подскажите, уважаемые !

как запомнить индекс (номер элемента) массива ?
т.е.

при обходе массива

foreach($file as $arr_file)
{
   $pattern = "/<fieldset>/i"; // допустим
   preg_match($pattern, $arr_file, $out);
   // $file[$element] = $out[0];  ? - вот это и есть вопрос   
}

нужно запомнить его порядковый номер в массиве...
че та не могу сообразить...

спасибо !

ну а если не затруднит ... подскажите еще как вытянуть в массив со страницы ее часть ?
допустим с найденного элемента и еще 10 элементов за ним ...

Спасибо !

   
 
 автор: Shiva   (20.12.2006 в 08:23)   письмо автору
 
   для: mehelson   (20.12.2006 в 08:16)
 

1.То есть вам нужен индекс последнего добавленного элемента?
Судя по тому, что в foreach вы не рассматриваете ключи, массив представляет собой список? Тогда так:

<?php
foreach($file as $arr_file

   
$pattern "/<fieldset>/i"// допустим 
   
preg_match($pattern$arr_file$out); 
   
$file[] = $out[0];  
   
$lastIndex count($file) - 1;

?>

Или я вас неправильно понял?

2.Нужно использовать регулярные выражения или - если элемент, который вы ищете, известен точно - строковые функции.

Например:

<?php
$element 
"A";
$limitAfterElement 10;
$string "aaA0123456789aaaaaaaaa";
$needle substr($stringstrpos($string$element), $limitAfterElement+1);
?>

   
 
 автор: Mehelson   (20.12.2006 в 08:37)   письмо автору
 
   для: Shiva   (20.12.2006 в 08:23)
 

да, видимо недопоняли...чуть...

содержимое страницы в массив (
 
<?php

$file 
file("index.html"

?>
)

затем при помощи рег.выражения ищем нужный элемент массива (строки страницы)

<?php

foreach($file as $arr_file)
{
   
$pattern "/<fieldset>/i"
   
preg_match($pattern$arr_file$out);

?>


Вот и вопрос - необходимо изъять в другой масив все строки файла, начиная с найденой
и скажем, еще 10 строк после...

Спасибо !

   
 
 автор: Shiva   (20.12.2006 в 09:00)   письмо автору
 
   для: Mehelson   (20.12.2006 в 08:37)
 


<?php 
$flag 
0;
$limit 10;
$result = array();
foreach(
$file as $arr_file

    if(
$flag && $flag $limit 1) {
        
$result[] = $arr_file;
        
$flag++;
        continue;
    } elseif(
$flag == $limit 1)
        break;
    
$pattern "/<fieldset>/i";  
    
preg_match($pattern$arr_file$out); 
    if(
$arr_file[0]) {
        
$result[] = $arr_file;
        
$flag 1;
    }
}

   
 
 автор: mehelson   (20.12.2006 в 10:41)   письмо автору
 
   для: Shiva   (20.12.2006 в 09:00)
 

в общем то все ясно и логично...

только как просмотреть получившийся массив ? ;)

   
 
 автор: Shiva   (20.12.2006 в 10:51)   письмо автору
 
   для: mehelson   (20.12.2006 в 10:41)
 

В смысле? Смотря, что вы имеете в виду, говоря "просмотреть"?

   
 
 автор: Mehelson   (20.12.2006 в 11:01)   письмо автору
 
   для: Shiva   (20.12.2006 в 10:51)
 

в смысле хочу посмотреть получившийся массив... какой тут еще может быть смысл ?

как в браузер его вывести ? не получаеца нужный результат...

   
 
 автор: Shiva   (20.12.2006 в 18:03)   письмо автору
 
   для: Mehelson   (20.12.2006 в 11:01)
 

например
print_r($result);
или
echo implode("\n", $result");

Просмотреть массив и вывести - разные вещи, когда речь идет о программировании.

   
 
 автор: Mehelson   (20.12.2006 в 13:06)   письмо автору
 
   для: Shiva   (20.12.2006 в 09:00)
 

и всё ? больше никто ничего не скажет... ?

   
 
 автор: Shiva   (20.12.2006 в 08:33)   письмо автору
 
   для: mehelson   (20.12.2006 в 08:16)
 

На всякий случай:
само получение кода со страницы можно организовать функцией file_get_contents()

   
 
 автор: mehelson   (20.12.2006 в 17:25)   письмо автору
 
   для: Shiva   (20.12.2006 в 08:33)
 

Ну кто-нибудь все-таки подскажет как сохранить в переменную номер элемента массива? Спасибо!

   
 
 автор: mehelson   (20.12.2006 в 17:27)   письмо автору
 
   для: Shiva   (20.12.2006 в 08:33)
 

Ну кто-нибудь все-таки подскажет как сохранить в переменную номер элемента массива? Спасибо!

   
 
 автор: Саня   (20.12.2006 в 19:52)   письмо автору
 
   для: mehelson   (20.12.2006 в 08:16)
 

<?
foreach ( $file as $key => $arr_file ) { 
  
$pattern "/<fieldset>/i"// допустим 
  
if ( preg_match($pattern$arr_file$out) )
    print 
"Совпадение найдено в строке №".$key."<br/>";   
}

   
 
 автор: mehelson   (21.12.2006 в 04:19)   письмо автору
 
   для: Саня   (20.12.2006 в 19:52)
 

Огромное Вам мерси !


Всё что требовалось !
Без лишних слов...

Спасибо, закрыли тему !

   
 
 автор: Саня   (21.12.2006 в 15:10)   письмо автору
 
   для: mehelson   (21.12.2006 в 04:19)
 

<?
foreach ( $file as $key => $arr_file ) {
  
$pattern "/<fieldset>/i";
  if ( 
preg_match($pattern$arr_file$out) ) {
    print 
"Совпадение найдено в строке №".$key."<br/>";
    
$slice array_slice($file$key11); // <---- тут
    
print_r($slice);
  }
}
Вот вам десятка строк после найденной.

   
 
 автор: mehelson   (22.12.2006 в 04:40)   письмо автору
 
   для: Саня   (21.12.2006 в 15:10)
 

Еще раз спасибо!

   
Rambler's Top100
вверх

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