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

Форум PHP

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

 

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

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

тема: Помогите с регулярным выражением
 
 автор: off   (25.08.2005 в 00:24)   письмо автору
 
 

Есть файл в котором содержится:

<html>
<body>
{БЛОК-1}
{БЛОК-2}
{БЛОК-33}
{БЛОК-1}
{БЛОК-2}
</body>
</html>

Этот код считает кол-во таких "блоков" в файле.

$file = fopen("index.html","r");
    $i=0;
    while(!feof($file))
    {
      $str = fgets($file);
      If (preg_match("|БЛОК-+[0-9]|i","$str")) $i++;
        
    }

    echo "Количество блоков:".$i;


Но есть одно но. Этот скрипт выдаст что их 5. Мне же нужно чтобы скрипт не считал повторяющиеся блоки, т.е выдал бы в этом случае, что их 3.
Подскажите плиз как это сделать.

   
 
 автор: cheops   (25.08.2005 в 00:38)   письмо автору
 
   для: off   (25.08.2005 в 00:24)
 

Можно загнать блоки в массив, а затем прогнать полученный массив через функцию array_unique(), потом останется только получить число элементов в массиве
<?php
  $file 
fopen("opr000JR.htm","r"); 
  while(!
feof($file)) 
  { 
      
$str fgets($file); 
      if (
preg_match("|(БЛОК-[0-9]+)|i","$str",$out)) $arr[] = $out[1]; 
  } 
  
// Избавляемся от повторяющихся элементов
  
$arr array_unique($arr);
  
// Выводим результат
  
echo "Количество блоков:".count($arr);
?>

   
 
 автор: off   (25.08.2005 в 00:43)   письмо автору
 
   для: cheops   (25.08.2005 в 00:38)
 

Огромное спасибо! РЕСПЕКТ!

   
Rambler's Top100
вверх

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