[Help] Custom function για μετατροπή από utf-8 σε ascii-1253

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

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

Απάντηση
Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

[Help] Custom function για μετατροπή από utf-8 σε ascii-1253

Δημοσίευση από giannis17 » 13 Οκτ 2014 03:14

Πριν πείτε οτιδήποτε να πω πως στο σύστημα δεν γίνεται να χρησιμοποιηθούν ούτε iconv ούτε mb functions.

Είναι ένα embedded σύστημα με 6mb περίπου ελεύθερο χώρο στη rom στην οποία πέρασα μια ΠΟΛΥ πετσοκομμένη έκδοση apache + php που μαζί με το php script μου πιάνουν ~4mb

Αυτό που ζητάω, επειδή δε το έχω ξανακάνει αλλά ξέρω πως μερικές παλιές καραβάνες από εδώ το έχουν έτοιμο, είναι η function που θα κάνει replace τα unicode chars με τα αντίστοιχα ascii (string parameter).

Ο πίνακας μετατροπής βρίσκεται εδώ: http://ftp.unicode.org/Public/MAPPINGS/ ... CP1253.TXT

Δεν με ενδιαφέρει να φτιάξει κάποιος όλο το array, απλά να φτιάξει την function και θα τα συμπληρώσω εγώ τα array (τι θα αλλάζει με τι).

Ίσως ήταν χαζό να κόψω το unicode από το compile αλλά δεν χώραγε αλλιώς και δεν είμαι καλός σε κάποια εναλλακτική της PHP για να πεις θα παίξω εκεί (ruby/perl/python).

Υ.Γ. Στέλνω στο μηχανάκι δεδομένα με json τα οποία είναι αναγκαστικά unicode και δεν αλλάζει ^^

Ευχαριστώ πολύ εκ των προτέρων!!!
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

[Help] Custom function για μετατροπή από utf-8 σε ascii-1253

Δημοσίευση από giannis17 » 13 Οκτ 2014 13:33

Βρήκα μια αρκετά ανορθόδοξη λύση με preg_replace. Θα ποστάρω όλο το script σε μερικές ώρες που θα τελειώσω (πρέπει να συμπληρώσω τα array xD)
"There is only one problem with common sense; it’s not very common."
– Milt Bryce


Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

[Help] Custom function για μετατροπή από utf-8 σε ascii-1253

Δημοσίευση από dva_dev » 13 Οκτ 2014 16:47

Ρίξε μια ματιά και σε αυτό.

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

[Help] Custom function για μετατροπή από utf-8 σε ascii-1253

Δημοσίευση από giannis17 » 13 Οκτ 2014 17:38

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

function uniTo1253($text){
	$ansi = array('€','β„Ά','Ά','Έ','Ή','Ί','Ό','Ύ','Ώ','ΐ','Α','Β','Γ','Δ','Ε','Ζ','Η','Θ','Ι','Κ','Λ','Μ','Ν','Ξ','Ο','Π','Ρ','Σ','Τ','Υ','Φ','Χ','Ψ','Ω','Ϊ','Ϋ','ά','έ','ή','ί','ΰ','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϊ','ϋ','ό','ύ','ώ');
	$uni = array('/\x{20AC}/u', '/\x{2122}/u', '/\x{0386}/u', '/\x{0388}/u', '/\x{0389}/u', '/\x{038A}/u', '/\x{038C}/u', '/\x{038E}/u', '/\x{038F}/u', '/\x{0390}/u', '/\x{0391}/u', '/\x{0392}/u', '/\x{0393}/u', '/\x{0394}/u', '/\x{0395}/u', '/\x{0396}/u', '/\x{0397}/u', '/\x{0398}/u', '/\x{0399}/u', '/\x{039A}/u', '/\x{039B}/u', '/\x{039C}/u', '/\x{039D}/u', '/\x{039E}/u', '/\x{039F}/u', '/\x{03A0}/u', '/\x{03A1}/u', '/\x{03A3}/u', '/\x{03A4}/u', '/\x{03A5}/u', '/\x{03A6}/u', '/\x{03A7}/u', '/\x{03A8}/u', '/\x{03A9}/u', '/\x{03AA}/u', '/\x{03AB}/u', '/\x{03AC}/u', '/\x{03AD}/u', '/\x{03AE}/u', '/\x{03AF}/u', '/\x{03B0}/u', '/\x{03B1}/u', '/\x{03B2}/u', '/\x{03B3}/u', '/\x{03B4}/u', '/\x{03B5}/u', '/\x{03B6}/u', '/\x{03B7}/u', '/\x{03B8}/u', '/\x{03B9}/u', '/\x{03BA}/u', '/\x{03BB}/u', '/\x{03BC}/u', '/\x{03BD}/u', '/\x{03BE}/u', '/\x{03BF}/u', '/\x{03C0}/u', '/\x{03C1}/u', '/\x{03C2}/u', '/\x{03C3}/u', '/\x{03C4}/u', '/\x{03C5}/u', '/\x{03C6}/u', '/\x{03C7}/u', '/\x{03C8}/u', '/\x{03C9}/u', '/\x{03CA}/u', '/\x{03CB}/u', '/\x{03CC}/u', '/\x{03CD}/u', '/\x{03CE}/u');
	return preg_replace($uni, $ansi, $text);
}
Για μισή ώρα μου έβγαζε "λάθυσ" αποτέλεσμα και κόντευα να πιστέψω πως κάτι δεν πάει καλά με την πετσοκομμένη php και το preg_replace, τελικά είχα ξεχάσει το 'ς' στον πάνω πίνακα και όλοι οι χαρακτήρες μετά από από αυτόν μπερδευόντουσαν. :D

Τι να πω αυτά παθαίνει κανείς όταν προσπαθεί να παντρέψει νέες τεχνολογίες με παλιές (ή και αρχαίες).
Ευχαριστώ για τις απαντήσεις σας.

Υ.Γ pls mark as solved
Υ.Γ.2 Το 'β„Ά' δεν είναι λάθος...είναι το σήμα του trademark (TM) και για κάποιο λόγο το εμφανίζει έτσι εδώ αλλά σαν κώδικας (x99 σε ASCII) είναι σωστό.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

Απάντηση

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

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

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