Перейти к содержимому

Сервис обмена электронных валют


Как получить значение тэга <TITLE>?

#1 Kismedia

Kismedia
  • Пользователь
  • 315 сообщений
  • Репутация: 0
0

Отправлено 14 Январь 2011 - 22:32

Привет всем! ;)

У меня вот появилась такая необходимость, получить значение тэга <TITLE> ,заданной ,сторонней страницы и вывести результат.

Написал небольшую функцию:

function parstitle ($urlsape){

if($html_content = @file_get_contents($urlsape)){
preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
print_r ($titles);
}else echo "Данные не доступны";
}


Значение <TITLE> страницы по адресу $urlsape успешно получено, но вот вывод идет следующий, в виде массива.

Array
 (
 [0] => Array
 (
 [0] =>
 )

 [1] => Array
 (
 [0] => Скачать бесплатно программы,антивирусы,утилиты.Инструменты,софт,графика и статьи для web дизайнера.
 )

)

Как это привести в человеческий вид (нужно только "Скачать бесплатно программы,антивирусы,утилиты.Инструменты,софт,графика и статьи для web дизайнера.")?

Спасибо за помощь!

 

 

  • 0

#2 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 14 Январь 2011 - 23:02

['charset'] = 'UTF-8'; тоже на результат вывода поставить.
Сейчас заметил что с кодировкой криво, если заданная страница не в UTF-8
  • 0

#3 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 14 Январь 2011 - 23:08

echo $titles[0];

Такой вариант не подходит? Я, возможно, не правильно понял структуру массива, но имею ввиду обычное обращение к определённому элементу. Можно так же сделать ссылку на элемент массива.
  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 14 Январь 2011 - 23:10

echo $titles[1][0];

  • 0

#5 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 14 Январь 2011 - 23:20

yury, спасибо, этот вывод значения из массива работает правильно.

function parstitle ($urlsape){

if($html_content = @file_get_contents($urlsape)){
preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
$titles = $titles[1][0];
echo $titles;
}else echo "Данные не доступны";
}


Теперь только "косяк" с кодировкой, как сделать вывод пременной $titles в UTF-8


  • 0

#6 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 14 Январь 2011 - 23:52

а у тебя сайт в какой кодировке работает?
и в какой выводится значение?
  • 0

#7 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 14 Январь 2011 - 23:57

Сайт в UTF-8 , поэтому и требуется значение $titles в UTF-8 перевести.
Вообще, $titles может уже и быть в UTF-8 , все зависит от сайта с которого мы получаем тег <TITLE>.
  • 0

#8 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 15 Январь 2011 - 00:00

если у тебя сайт на UTF-8 работает, то значение $titles будет выводиться в этой же кодировке
  • 0

#9 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 15 Январь 2011 - 00:08

К сожалению нет, выводит в той, в которой страница которую мы парсим.

Вот так получается пренудительно сменить кодировку:

$titles=iconv("cp1251", "utf-8", $titles);

  • 0

#10 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 15 Январь 2011 - 00:11

так ты заголовки парсишь с другой страницы? чего сразу не сказал, кинь в корень .htaccess и пропиши в нем строку

AddDefaultCharset utf-8


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru