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

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: META - поиск

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (13.09.2005 в 14:11)   письмо автору
 
   для: kran   (13.09.2005 в 11:18)
 

да.

   
 
 автор: kran   (13.09.2005 в 11:18)   письмо автору
 
   для: cheops   (13.09.2005 в 01:37)
 

Т.е. как я понял определить кодировку части текста нельзя, и единственным условием, которое здесь можно применить - это запрашивать кодировку всего документа из мета-тега charset. И уже на основании полученного значения применять конвертацию в нужном направлении.

Я правильно понял?

   
 
 автор: cheops   (13.09.2005 в 01:37)   письмо автору
 
   для: kran   (12.09.2005 в 20:27)
 

Для KOI8-R всё просто
<?php 
  $koi 
"УНЕЫОЩЕ Й ЧЕУЕМЩЕ РПЪДТБЧМЕОЙ";
  echo 
convert_cyr_string($koi,'k','w');
?>

Для UTF-8 уже не получится преобразовать так как бинарные данные побиты кодировкой cp1251 на форуме - нужно текст прямо из источника брать.

PS Определить какая кодировка без указания (например в META-тэге) нельзя - тут только на глазок и запоминать где в какой кодировке данные представлены.

   
 
 автор: kran   (12.09.2005 в 20:27)   письмо автору
 
   для: cheops   (12.09.2005 в 13:19)
 

Все прочитал, вроде понятно, но что-то не получается!

А можно разобрать на конкретном примере?

Предположим вводится некий url, скрипт идет по нему и извлекает из этой страницы два значения - название страницы и ее описание, далее определяется текущая кодировка полученных данных. Если кодировка не соответствует windows-1251, то выполняется конвертирование, иначе все нормально и скрипт работает дальше.

Данные для примера:
$utf="продажа машины в кредит";
$koi="УНЕЫОЩЕ Й ЧЕУЕМЩЕ РПЪДТБЧМЕОЙ";

Спасибо!

   
 
 автор: cheops   (12.09.2005 в 13:19)   письмо автору
 
   для: kran   (12.09.2005 в 11:57)
 

Нужно преобразовывать кодировку - первая это UTF-8, вторая KOI8-R. Решать эту проблему следует либо при помощи функций iconv http://www.softtime.ru/group/id_group=11, либо при помощи подручных средств http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3425 и функции convert_cyr_string() http://www.softtime.ru/dic/id_dic=16&id_group=1

   
 
 автор: kran   (12.09.2005 в 11:57)   письмо автору
 
   для: cheops   (12.09.2005 в 01:14)
 

И еще один вопрос!

В результате работы скрипта при вводе некоторых сайтов, на выходе получается что-то типа:

порно фото и рассказы
или
УЛБЮБФШ РПТОП Ч ЖПТНБФЕ 3gp ДМС ФЕМЕЖПОБ motorola c 650

Как можно решить проблему, чтобы все выводилось в одной кодировке?

Спасибо!

   
 
 автор: cheops   (12.09.2005 в 01:14)   письмо автору
 
   для: kran   (12.09.2005 в 00:59)
 

Да, можно и с title также поступить, здесь даже недавно тема была про title.

Модификатор U изменяет "жадность" регулярного выражения - если в обычном режиме регулярное выражение старается найти как можно более длинное соответствие, то с модификатором U - регулярное выражение старается найти как можно более короткое соответствие http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7118.
Почитать подробнее о модификатарах можно по ссылке http://www.softtime.ru/dic/id_dic=133&id_group=3.

http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7298

   
 
 автор: kran   (12.09.2005 в 00:59)   письмо автору
 
   для: cheops   (11.09.2005 в 22:00)
 

Так, кажется я понял!
Т.е. в данном документе ищем строку по заданному шаблону, a то что находится в шаблоне внутри круглых скобок - это и есть элемент массива с нужными нам данными! КРУТО!

А я еще вот что накопал, и хотелось бы услышать мнение на этот счет, что лучше?


$meta=get_meta_tags($url); 
$description=$meta['description'];


А с <title> можно тогда также поступить! Правильно?

$text = file_get_contents($url); 
  preg_match("#<title>([^<\"\']+)</title>#iU", 
           $text, $out); 
  echo "<pre>"; 
  echo $out[1]; 
  echo "</pre>"; 


Да, а что значит "U" в конце выражения?

Спасибо!

   
 
 автор: cheops   (11.09.2005 в 22:00)   письмо автору
 
   для: kran   (11.09.2005 в 18:55)
 

Это можно осуществить при помощи скрипта
<?php 
  $text 
file_get_contents($url); 
  
preg_match("#<META[\s]+name[\s]*=[\s]*['\"]?description['\"]?[\s]*content[\s]*=[\s]*['\"]?([^>\"\']+)['\"]?>#iU"
           
$text$out); 
  echo 
"<pre>"
  echo 
$out[1]; 
  echo 
"</pre>"
?>

   
 
 автор: Евгений Петров   (11.09.2005 в 20:16)   письмо автору
 
   для: kran   (11.09.2005 в 18:55)
 

Помоему твой код неправильно выведет если между <title></title> будет примерно такое:
...
<title>Символ "</" зачем он нужен?</title>
...

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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