Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблема с кодировкой  [new]
PsychoPM
Member

Откуда:
Сообщений: 400
Добрый день или что там у вас. Есть простой скрипт

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
$conn = oci_connect('***', '***', '***');
set_time_limit(999999);

function fetch_and_parse_page($url)
{
$html = mb_convert_encoding(file_get_contents($url),"UTF-8","auto");
    preg_match("/<title>(.+)<\/title>/siU", $html, $matches);
    $title = $matches[1];
    $re="<meta\s+name=['\"]??keywords['\"]??\s+content=['\"]??(.+)['\"]??\s*\/?>";
    preg_match("/$re/siU", $html, $matches);
    $keywords = $matches[1];
    $re="<meta\s+name=['\"]??description['\"]??\s+content=['\"]??(.+)['\"]??\s*\/?>";
    preg_match("/$re/siU", $html, $matches);
    $desc = $matches[1];
    $info = array("url" => $url,"title" => $title, "keywords" => $keywords, "description" => $desc);    
    return($info);
}

function Visit($url)
{
	$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
	curl_setopt ($ch, CURLOPT_URL,$url );
	curl_setopt($ch, CURLOPT_USERAGENT, $agent);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch,CURLOPT_VERBOSE,false);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	$page=curl_exec($ch);
	$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);
	if($httpcode>=200 && $httpcode<300) return true;
	else return false;
}


$get_num_sites = oci_parse($conn,"SELECT url, site_id FROM sites_catalog WHERE site_id = 9704");
oci_execute($get_num_sites);
while($row = oci_fetch_array($get_num_sites,OCI_BOTH))
{
	$data = fetch_and_parse_page("http://".str_replace("www.","",$row["URL"]));
	oci_execute(oci_parse($conn,"UPDATE sites_catalog_details SET meta_title = '".$data["title"]."', meta_description = '".$data["description"]."', meta_keywords = '".$data["keywords"]."' WHERE site_id = '".$row["SITE_ID"]."'"));
	echo "UPDATE sites_catalog_details SET meta_title = '".$data["title"]."', meta_description = '".$data["description"]."', meta_keywords = '".$data["keywords"]."' WHERE site_id = ".$row["SITE_ID"]."";
	echo "<br/><b>GO - "."http://".str_replace("www.","",$row["URL"])."</b><br/>";
}

oci_free_statement($get_num_sites);
oci_close($conn);
?>
</body>
</html>

Он собирает данные с сайтов. Meta - Title, Keywords, Description. Кодировок много, под каждый сайт не подстроишься, решил использовать библиотеку mb_string для конвертирования. Ладно, использовал её. Распечатывает все отлично, а в базу заносит криво.

http://s007.radikal.ru/i302/1011/36/5953481ea672.jpg

кодировка файла скрипта тоже UTF-8*

что делать? Все сайты по которым ходит скрипт многоязычные. Идеального результата тут не добьешься, но все таки?
13 ноя 10, 14:09    [9773414]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
PsychoPM,

не понял я как это к ораклу относится... Почему бы просто не получать кодировку из content-type= charset=...??
13 ноя 10, 14:47    [9773744]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
PsychoPM
Member

Откуда:
Сообщений: 400
в базу заносятся битые данные, я вообще первый раз с подобным сталкиваюсь на Oracle. никогда раньше проблем с кодировками не было.
13 ноя 10, 14:56    [9773825]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
an0nym
Member

Откуда:
Сообщений: 7076
PsychoPM,

oci_connect("ip:port/unique_name;charset=AL32UTF8", "...", "...")
13 ноя 10, 14:59    [9773840]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
PsychoPM
Member

Откуда:
Сообщений: 400
спасибо, все отлично. Только кодировку нужно указывать как последний необязательный аргумент.
13 ноя 10, 23:31    [9775826]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить