Πρόβλημα με ελληνικούς χαρακτήρες - CURL

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
magaras
Δημοσιεύσεις: 4
Εγγραφή: 19 Σεπ 2012 17:59

Πρόβλημα με ελληνικούς χαρακτήρες - CURL

Δημοσίευση από magaras » 19 Σεπ 2012 18:13

Καλησπέρα σε όλη την κοινότητα,

έχω το ακόλουθο πρόβλημα και ελπίζω κάποιος να μπορέσει να μου δώσει τα φώτα του.

Χρησιμοποιώντας την CURL, κατεβάζω τα δεδομένα μιας σελίδας (άρθρα ιστολογίων).

Κώδικας: Επιλογή όλων

$useragent='Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2';

$ch = curl_init();	
$header = array('Accept-Charset: UTF-8');

curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);


Έπειτα με DomDocument και XpathQuery βρίσκω το σώμα του κειμένου και το εμφανίζω.

Κώδικας: Επιλογή όλων

foreach($res as $text_result){
	$texter=strip_tags($text_result->nodeValue);
	$texter=trim($texter);	
}


Το πρόβλημα είναι ότι σε ορισμένα ιστολόγια το κείμενο επιστρέφεται με την ακόλουθη μορφή: Θέλεις τους πολιτικο

Τόσο το charset του ιστολογίου, όσο και το charset στο script μου είναι 'UTF-8'.
Επίσης ελέγχω το encoding του κειμένου που επιστρέφεται με την

Κώδικας: Επιλογή όλων

mb_check_encoding
και είναι και αυτό κανονικά σε 'UTF-8' κωδικοποίηση.

Έχει κανείς καμιά ιδέα για το ποιο μπορεί να είναι το πρόβλημα;

magaras
Δημοσιεύσεις: 4
Εγγραφή: 19 Σεπ 2012 17:59

Πρόβλημα με ελληνικούς χαρακτήρες - CURL

Δημοσίευση από magaras » 04 Οκτ 2012 11:56

Τελικά κατάφερα και έσωσα μία "κάποια" λύση στο πρόβλημα.

Άλλαξα το

Κώδικας: Επιλογή όλων

@$dom ->loadHTML($data);
σε

Κώδικας: Επιλογή όλων

@$dom->loadHTML&#40;'<?xml encoding="UTF-8">' . $data&#41;;

Εν τέλει όλοι οι χαρακτήρες εμφανίζονται κανονικά στην οθόνη μου και αποθηκεύονται σωστά στη βάση μου στο pc.

Όταν όμως γίνεται η ίδια διαδικασία στο host server, τότε πάλι δεν αποθηκεύονται σωστά στην βάση. Έχω κάνει λογαριασμό στο 000webhost.

magaras
Δημοσιεύσεις: 4
Εγγραφή: 19 Σεπ 2012 17:59

Πρόβλημα με ελληνικούς χαρακτήρες - CURL

Δημοσίευση από magaras » 04 Οκτ 2012 17:43

Προς ενημέρωση για όσους συναντήσουν παρόμοιο πρόβλημα.

Η λύση είναι η κωδικοποίηση των html entities κατά την φόρτωνση των περιεχομένων.

Κώδικας: Επιλογή όλων

@$dom->loadHTML&#40;mb_convert_encoding&#40;$data, 'HTML-ENTITIES', 'UTF-8'&#41;&#41;;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες