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

Форум PHP

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

 

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

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

тема: curl, получить полностью content-type сервера

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

 
 автор: confirm   (28.04.2013 в 11:42)   письмо автору
 
   для: Slo_Nik   (28.04.2013 в 09:32)
 

Вот этого я не знаю Если вы сперва забираете со всех сайтов, готовите эти данные, сохраняя их в массиве, а только потом записываете их в базу, то есть смысл в этом же массиве хранить и признак конвертирования. Хотя с другой стороны, парсер это ведь "не прочитать" body (хотя есть и классы которые разбирают документ на DOM-элементы), а пользуетесь регулярными выражениями, и какой тогда смыл для в этих выражениях учитывать кодировку, проще указать модификатор для utf, если вы пишите в базу в этой кодировке.
Беспокоится, что будут английские и при сохранении в базу нет смысла их конвертировать, тоже нет смысла - хотя английским символам и нужно по одному байту, в базе все равно резервируется больше одного байта на символ. То есть, если это забота об экономии места, то она напрасная.

В общем вам виднее, что и как делать, вы же делаете, не я, я не в курсе забот ваших. )

  Ответить  
 
 автор: Slo_Nik   (28.04.2013 в 09:32)   письмо автору
 
   для: confirm   (28.04.2013 в 02:52)
 

На счёт substr() конечно, не подумал как следует.
Вот с моментом определения кодировки я подумал, что будет лучше сразу её записать элементом массива. Потом, когда подготавливать к записи в базу, посмотреть этот элемент и уже решать, применять iconv() или нет, без определения кодировке в цикле.

  Ответить  
 
 автор: confirm   (28.04.2013 в 02:52)   письмо автору
 
   для: Slo_Nik   (27.04.2013 в 22:46)
 

Ну да, я привожу пример работы с удаленными данными, потому и file_get_contents, а вы значит обошлись, хотя загружаете иным способом. )
Я в примере брал часть только затем, чтобы не грузить все, вдруг там размер километровый. Вы же для парсера вынуждены забирать все, так что смысла в substr($str, 0, 500 нет). Да и проверять кодировку сразу тоже нет необходимости - получили контент вас интересующий, а потом уже определись с его кодировкой.
Не может определиться со строкой меньшей длины наверное же потому, что на этом участке нет мультибайтных символов, ведь английским что utf, что нет, все одно один байт занимают.

  Ответить  
 
 автор: Slo_Nik   (27.04.2013 в 22:46)   письмо автору
 
   для: confirm   (27.04.2013 в 03:12)
 

Благодарю за подсказку.
Чуть изменил Ваш пример, обошёлся без file_get_contents();


<?php 
$con_type 
mb_detect_encoding(substr($str0500), 'UTF-8'true) ? 'UTF-8' 'Windows-1251' ;
?>


Только ещё один вопрос.
Если указать длину возвращаемой подстроки меньше 500, например 400, то кодировку уже не определяет, всем трём сайтам указывает одинаковую.
Почему это так зависит от длины строки?

  Ответить  
 
 автор: confirm   (27.04.2013 в 03:12)   письмо автору
 
   для: Slo_Nik   (27.04.2013 в 02:57)
 

<?
echo mb_detect_encoding(file_get_contents('http://www.votpusk.ru/firmlist.asp'falsenull01000),'utf-8'true) ? 'UTF' 'NO';

А у меня он никак не утверждает, что в UTF.
mb_detect_encoding() в данном применении точно закосячит, если в коде где либо не в начале будет BOM.

  Ответить  
 
 автор: Slo_Nik   (27.04.2013 в 02:57)   письмо автору
 
   для: confirm   (27.04.2013 в 02:36)
 

http://www.votpusk.ru/firmlist.asp

  Ответить  
 
 автор: confirm   (27.04.2013 в 02:36)   письмо автору
 
   для: Slo_Nik   (27.04.2013 в 01:39)
 

URL сайта на котором не корректно детектируется напишите.

  Ответить  
 
 автор: Slo_Nik   (27.04.2013 в 01:39)   письмо автору
 
   для: confirm   (26.04.2013 в 03:38)
 

get_meta_tags() не подходит потому, что возвращает значение тех meta тегов у которых есть атрибут name.

И с mb_detect_encoding() тоже фигня получается.
Для всех трёх сайтов показала utf-8, но ведь одни сайт точно в windows-1251...

  Ответить  
 
 автор: confirm   (26.04.2013 в 03:38)   письмо автору
 
   для: Slo_Nik   (25.04.2013 в 22:34)
 

get_meta_tags(file_get_contents(url))

  Ответить  
 
 автор: Slo_Nik   (25.04.2013 в 22:34)   письмо автору
 
   для: confirm   (25.04.2013 в 21:55)
 

как проверяются мета данные?

  Ответить  

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

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

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