PDA

Pogčedajte punu verziju : jedno pitanje u vezi preg_match...


dejan86
03. 07. 2009., 22:42
ako bi neko mogao da me uputi u pravom smjeru, bio bih mu zahvalan, evo vec cio dan googlam i pokusavam :)

Naime, pomocu file_get_contents i preg_match citam sadrzaj neke stranice, koja je charset=windows-1250, trazim pomocu patterna odredjene html tagove (<span> i </span>)i sadrzaj izmedju njih, i ispisujem pomocu echo. Sve radi, samo sto nece da mi prikaze nasa slova kako treba :( ovo je npr sadrzaj fajla citaj.php:

<?php
$url = "neki url";
$input = file_get_contents($url) or die('Could not access file: $url');

if(preg_match_all('/<span>(.*?)<\/span>/s', $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
echo ($match[1]) . "<br/><br/>";
}
}
?>

takodje me zanima kako bi se ovo moglo upisivati u mysql bazu, ali sa normalnim slovima :)

unaprijed zahvalan na nekom uputstvu, savjetu..

LiquidBrain
03. 07. 2009., 23:16
Mozda najbolje resenje je da konvertujesh string u UTF-8. Pa poste takav string staish u bazu

<?php
$url = "neki url";
$input = file_get_contents($url) or die('Could not access file: $url');

if(preg_match_all('/<span>(.*?)<\/span>/s', $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
//konvertuje string u UTF-8 enkodovanje
$str=mb_convert_encoding($match[1],"UTF-8","Windows-1250");
echo ($str) . "<br/><br/>";
}
}
?>

smuggler
03. 07. 2009., 23:17
Tekst koji isparsiras konvertuj na sledeci nacin npr.

$description = iconv('Windows-1250', 'UTF-8', $description);

pa ga onda prikazi na stranici (koja je naravno utf-8).

Takodje prije insert-a, izvrsi

mysql_query("SET NAMES 'UTF8'");

a mozes i dodati

mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");

to mora da radi :) .

Za parsiranje stranica preporucujem http://simplehtmldom.sourceforge.net/ .

dejan86
03. 07. 2009., 23:29
Zahvaljujem vam..

Upravo sam bio pronasao iconv funkciju, i slicno kao sto je Milan rekao, konvertovao rezultat u ISO-8859-2, i tako mi je sa echo prikazivalo i nasa slova..

Pokusacu sada da upisem u bazu, kako je smuggler rekao, mora da radi :)

Pozdrav