|
|
|
| Привет всем
В книге М. Кузнецова php5 есть такое задание
4.3. Создайте функцию, которая, принимая строку с HTML-страницей, воз-
вращала бы ее название, заключенное между тегами <title> и </title>.
Пользоваться можно лишь строковыми функциями и д.р., но нельзя регулярками
// Скачиваем страничку с встроку
$path = 'http://www.softtime.ru';
$str = '';
if (($str = file_get_contents($path)) === FALSE) die("Ошибка открытия Файла");
//Первое вхождение строки
$pFirstPos = strpos($str, "<title>");
//Последнее вхождение строки
$pLastPos = strpos($str, "</title>");
if (($pFirstPos !== FALSE)&&($pLastPos !== FALSE))
{
echo substr($str, $pFirstPos+7, $pLastPos-$pFirstPos-7);
}
|
А как можно сделать:
1. регистронезависимый поиск в строке для парсинга $str, например не "<title>", а "<TItLe>",
2. можно ли переписать эту строку if (($str = file_get_contents($path)) === FALSE) echo die("Ошибка открытия Файла");, чтобы выходило лишь мое диагностическое сообщение "Ошибка открытия Файла", а не стандартное из функции file_get_contents
3. Оптимально ли написан код, можно ли использовать другие функции, алгоритмы, приемы? | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(22.01.2010 в 20:22)
| | 1. stripos();
2. Не совсем понял. У вас же и так на экран выводится то, что вы в die() напишите.
3. В комментариях неверные слова. Последнее вхождение ищет strripos(), но это явно не то, что нужно вам.
//Первое вхождение строки
$pFirstPos = strpos($str, "<title>");
//Последнее вхождение строки
$pLastPos = strpos($str, "</title>");
|
В остальном - переходите к регуляркам, я думаю. | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 20:35)
| | Спасибо, neadekvat , Вы в очередной раз мне помогаете))
2. Сначала в условии вычисляется file_get_contents($path)), а лишь затем die. Получается если $path синтаксически неверен, то функция file_get_contents первой выводит сообщение об ошибке, а die потом. Так вот а нельзя ли чтобы сначала die, а потом вторая.. Или как то по другому это все реализовать
А регулярки в следующей главе)) | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(22.01.2010 в 20:51)
| | ...$str = @file_get_contents($path))... | |
|
|
|