thiva7 Δημοσ. 13 Απριλίου 2015 Δημοσ. 13 Απριλίου 2015 Καλησπερα Φτιαχνω ενα μικρο σκρπτ να παρω μερικα δεδμομενα που θελω απο ενα αλλο σιτε και εχω θεμα με το str_replace κανω αυτο if ( !preg_match( '|<TITLE>(.*?)</TITLE>|', $originalPage3 , $matchtitle ) ) { } $matchtitle = $matchtitle[1]; $title = str_replace(' - Live', ' ', $matchtitle); $title = str_replace('somedomain.gr', ' ', $title); οκ με τους αγγλικους χαρακτιρες αλλα με τα ελληνικα δεν δουλευει με τιποτα το μνμ που θελω να αφαιρεσω ειναι αυτο ( - Live στο somedomain.gr ). δοκιμασα και αυτο που βρηκα στο νετ function greeklish($Name) { $greek = array('α','ά','Ά','Α','β','Β','γ', 'Γ', 'δ','Δ','ε','έ','Ε','Έ','ζ','Ζ','η','ή','Η','θ','Θ','ι','ί','ϊ','ΐ','Ι','Ί', 'κ','Κ','λ','Λ','μ','Μ','ν','Ν','ξ','Ξ','ο','ό','Ο','Ό','π','Π','ρ','Ρ','σ','ς', 'Σ','τ','Τ','υ','ύ','Υ','Ύ','φ','Φ','χ','Χ','ψ','Ψ','ω','ώ','Ω','Ώ',' ',"'","'",','); $english = array('a', 'a','A','A','b','B','g','G','d','D','e','e','E','E','z','Z','i','i','I','th','Th', 'i','i','i','i','I','I','k','K','l','L','m','M','n','N','x','X','o','o','O','O','p','P' ,'r','R','s','s','S','t','T','u','u','Y','Y','f','F','ch','Ch','ps','Ps','o','o','O','O','_','_','_','_'); $string = str_replace($greek, $english, $Name); return $string; } $msg = '- Live στο somedomain.gr'; $msg = greeklish($matchtitle[1]); echo $msg; //βγαζει Live_sto_somedoamin.gr και δουλευει αλλα αμα το κανω function greeklish($Name) { $greek = array('α','ά','Ά','Α','β','Β','γ', 'Γ', 'δ','Δ','ε','έ','Ε','Έ','ζ','Ζ','η','ή','Η','θ','Θ','ι','ί','ϊ','ΐ','Ι','Ί', 'κ','Κ','λ','Λ','μ','Μ','ν','Ν','ξ','Ξ','ο','ό','Ο','Ό','π','Π','ρ','Ρ','σ','ς', 'Σ','τ','Τ','υ','ύ','Υ','Ύ','φ','Φ','χ','Χ','ψ','Ψ','ω','ώ','Ω','Ώ',' ',"'","'",','); $english = array('a', 'a','A','A','b','B','g','G','d','D','e','e','E','E','z','Z','i','i','I','th','Th', 'i','i','i','i','I','I','k','K','l','L','m','M','n','N','x','X','o','o','O','O','p','P' ,'r','R','s','s','S','t','T','u','u','Y','Y','f','F','ch','Ch','ps','Ps','o','o','O','O','_','_','_','_'); $string = str_replace($greek, $english, $Name); return $string; } $originalPage3 = file_get_contents( 'http://www.somedomain.com/blahblah' ); if ( !preg_match( '|<TITLE>(.*?)</TITLE>|', $originalPage3 , $matchtitle ) ) { echo "Sorry, I could not find the hot image."; //bye exit(); } $msg = $matchtitle[1]; $msg = greeklish($matchtitle[1]); echo $msg; Δεν δουλευει. Τσπ πως μπορώ να κάνω κάτι για να αφαιρώ η να κανω str_replace σε ελληνικα? Ευχαριστω
defacer Δημοσ. 13 Απριλίου 2015 Δημοσ. 13 Απριλίου 2015 Γενικά το πρόβλημά σου είναι ότι το encoding της εισόδου που έχεις και το encoding του κώδικά σου (ο οποίος περιλαμβάνει τα search/replace strings) δεν είναι το ίδιο. Η απλούστερη λύση θα ήταν να υποθέσεις πως η είσοδος είναι UTF-8 (κατά 99% ισχύει) και να σώσεις το αρχείο σου επίσης σαν UTF-8. Αυτό το λέω καθαρά από πρακτικής άποψης γιατί και πάλι διάφορα πράγματα μπορούν να πάνε στραβά. Αλλά για την περίπτωσή σου είναι μάλλον good enough. Επίσης, δε χρειάζεσαι ούτε ένα str_replace εδώ, αφού έχεις regular expression μπορείς απλά να κάνεις capture μόνο το τμήμα που σ' ενδιαφέρει να κρατήσεις. if ( !preg_match( '|<TITLE>(.*?)\s*-[^-]*somedomain\.gr</TITLE>|', $originalPage3 , $matchtitle ) ) { die('whatever'); } $title = $matchtitle[1]; 1
thiva7 Δημοσ. 13 Απριλίου 2015 Μέλος Δημοσ. 13 Απριλίου 2015 Γενικά το πρόβλημά σου είναι ότι το encoding της εισόδου που έχεις και το encoding του κώδικά σου (ο οποίος περιλαμβάνει τα search/replace strings) δεν είναι το ίδιο. Η απλούστερη λύση θα ήταν να υποθέσεις πως η είσοδος είναι UTF-8 (κατά 99% ισχύει) και να σώσεις το αρχείο σου επίσης σαν UTF-8. Αυτό το λέω καθαρά από πρακτικής άποψης γιατί και πάλι διάφορα πράγματα μπορούν να πάνε στραβά. Αλλά για την περίπτωσή σου είναι μάλλον good enough. Επίσης, δε χρειάζεσαι ούτε ένα str_replace εδώ, αφού έχεις regular expression μπορείς απλά να κάνεις capture μόνο το τμήμα που σ' ενδιαφέρει να κρατήσεις. if ( !preg_match( '|<TITLE>(.*?)\s*-[^-]*somedomain\.gr</TITLE>|', $originalPage3 , $matchtitle ) ) { die('whatever'); } $title = $matchtitle[1]; Ευχαριστω..αυτο δουλεψε... απλα ακομα μαθαινω. αυτο τι κανει \s*- φιλτραρι?
defacer Δημοσ. 13 Απριλίου 2015 Δημοσ. 13 Απριλίου 2015 http://www.regular-expressions.info/ Δεν έχει νόημα να πω τα ίδια πράγματα απλά όχι τόσο επεξηγηματικά.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα