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

Форум PHP

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

 

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

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

тема: Поиск текста в файле
 
 автор: Zebra   (13.09.2004 в 00:37)
 
 

Мне нужно открыть html файл и найти к примеру что находится между <title> </title>

   
 
 автор: Zebra   (13.09.2004 в 02:15)
 
   для: Zebra   (13.09.2004 в 00:37)
 

Придумал ! :) а есть ли еще какие нибудь красивые решения?
Может есть какие нибудь встроенные функции ???

// чтение файла в строку
$stroka = join ('' , file("путь к файлу" ));
// Определяем позицию <title>
$string_1 = strpos("$stroka", "<title>");
$string_2 = strpos("$stroka", "</title>");
// Определяем позицию </title>
$dlina_stroki = $string_2-$string_1-7;
// Вычисляем длину строки заключенную между тегами <title></title>
$title = substr("$stroka", $string_1+7, $dlina_stroki);
Echo "$title";

   
 
 автор: Zebra   (13.09.2004 в 04:08)
 
   для: Zebra   (13.09.2004 в 02:15)
 

В предедущем примере переменной $title передавалось ХЗ что если тегов <title> небыло или был один из них.

// чтение файла в строку
// join ('' тут две одинарные кавычки!!!
$stroka = join ('' , file("путь к файлу" ));
// Определяем позицию <title>
$string_1 = strpos("$stroka", "<title>");
// Определяем позицию </title>
$string_2 = strpos("$stroka", "</title>");
// Защита от глюка если нет тегов </title> или есть один из тегов
If ($string_1 > 0)
{
// Вычисляем длину строки заключенную между тегами <title></title>
$dlina_stroki = $string_2-$string_1-7;
}
else
{
// dlina_stroki= -1; -1 от балды можно -52454
$dlina_stroki= -1;
}
// Защита от глюка если нет тегов </title>
If ($dlina_stroki < 0) { $title = "Нет тегов title "; }
else{
$title = substr("$stroka", $string_1+7, $dlina_stroki);}

   
 
 автор: Zebra   (13.09.2004 в 04:31)
 
   для: Zebra   (13.09.2004 в 04:08)
 

Эх скоро на работу :(
так народ сеня ночь не спал как следствие не покупайте ВАЗовскую классику седнешней сборки коробки будут шуметь а то и вобще накроются :))
Кто нить подскажите если нужно обработать теги < title > и тег
< card title=" ">
...
...
<card>
И чтобы скрипт переменной $title передавал значение заключенное между < card title=" и ">
Я думаю как избежать ошибок ?
Ведь комбинация "> может встречатся сотни раз
Разве что сразу после "> дописывать пустой тег <p></p>
Вероятность того что "><p></p> встретится в обычном html коде наверно стремиться к 0.

   
 
 автор: cheops   (13.09.2004 в 10:05)   письмо автору
 
   для: Zebra   (13.09.2004 в 04:31)
 

Здесь без регулярных выражений действительно сложно обойтись:
<?php 
  
// имя файла
  
$filename "read.html";
  
// открываем файл 
  
$file fopen($filename"r"); 
  
// читаем его содержимое в буффер 
  
$buffer fread($filefilesize($filename)); 
  
// закрываем файл 
  
fclose($file); 
  
// Определяем позицию <title>
  
$pattern "/<[\s]*card[\s]*title[\s]*=[\s]*\"([^\"]*)\"[\s]*>/i"
  
preg_match($pattern,$buffer,$out);
  echo 
$out[1];
?>


http://www.softtime.ru/group/id_group=3

   
 
 автор: cheops   (13.09.2004 в 09:58)   письмо автору
 
   для: Zebra   (13.09.2004 в 02:15)
 

Вообще говоря оперирование непосредственно строками, это действительно самый быстрый способ, но если в тэгах < title > имеются пробелы, скрипт не сработает, в этом случае более оправдано использование регулярных выражений:
<?php 
  
// имя файла
  
$filename "read.html";
  
// открываем файл 
  
$file fopen($filename"r"); 
  
// читаем его содержимое в буффер 
  
$buffer fread($filefilesize($filename)); 
  
// закрываем файл 
  
fclose($file); 
  
// Определяем позицию <title>
  
$pattern "/<[\s]*title[\s]*>([^<]*)<[\s]*\/[\s]*title[\s]*>/i"
  
preg_match($pattern,$buffer,$out);
  echo 
$out[1];
?>


PS Но это более медленный вариант, хотя более надёждый, так как учитывает все возможные случаи.

http://www.softtime.ru/group/id_group=3

   
Rambler's Top100
вверх

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