Προς το περιεχόμενο

regex για Ελληνικά


Επισκέπτης

Προτεινόμενες αναρτήσεις

Καλησπέρα.

Έχω αυτό το regex στα Αράβικα και Αγγλικά.

$text = preg_replace('/(?<!\S)#([0-9a-zA-Zذضصثقفغعهخحجدشسيبلاتنمكطئءؤرلاىةوزظأإآ_]+)/', '<a href="/hashtag/$1" class="hashtaglink">#$1</a>', $text);

Το βρήκα στο stackoverflow αλλά δεν ξέρω πως να το κάνω και για Ελληνικά ας έχει και Αράβικα μέσα.

Ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δες εδώ:

https://www.regular-expressions.info/unicode.html#category

Μπορείς να χρησιμοποιήσεις τη Unicode κατηγορία "Letters": \p{L}

Άρα, η κανονική σου έκφραση θα γίνει:

$text = preg_replace('/(?<!\S)#([0-9\p{L}_]+)/', '<a href="/hashtag/$1" class="hashtaglink">#$1</a>', $text);

 

που θα πρέπει να δουλεύει για όλες τις γλώσσες με non-Latin χαρακτήρες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

16 λεπτά πριν, parsifal είπε

Δες εδώ:

https://www.regular-expressions.info/unicode.html#category

Μπορείς να χρησιμοποιήσεις τη Unicode κατηγορία "Letters": \p{L}

Άρα, η κανονική σου έκφραση θα γίνει:


$text = preg_replace('/(?<!\S)#([0-9\p{L}_]+)/', '<a href="/hashtag/$1" class="hashtaglink">#$1</a>', $text);

 

που θα πρέπει να δουλεύει για όλες τις γλώσσες με non-Latin χαρακτήρες.

Η βάση δεδομένων είναι UTF-8 και επιστρέφει 

#��;Αγάπη

στο hashtag #Αγάπη

Κάτι για UTF-8 db;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν φαίνεται για πρόβλημα στην κανονική έκφραση, αλλά στον τρόπο που έχεις ρυθμίσει τη ΒΔ σου, αποθηκεύεις σε και ανακτάς δεδομένα από αυτήν.

Δες π.χ.

https://stackoverflow.com/questions/10099011/getting-utf-8-strings-from-mysql-using-php

https://kunststube.net/frontback/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...φφφ Δεν ξέρω. 
Όλα τα έκανα αλλά δεν βγήκε. Σωστά τα λες αλλά θα προσπαθήσω άλλη ημέρα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
Στις 31/8/2021 στις 6:19 ΜΜ, parsifal είπε

Δεν φαίνεται για πρόβλημα στην κανονική έκφραση, αλλά στον τρόπο που έχεις ρυθμίσει τη ΒΔ σου, αποθηκεύεις σε και ανακτάς δεδομένα από αυτήν.

Δες π.χ.

https://stackoverflow.com/questions/10099011/getting-utf-8-strings-from-mysql-using-php

https://kunststube.net/frontback/

parsifal μήπως μπορείς να μου γράψεις πως γίνετε και με non-unicode τρόπο

$text = preg_replace('/(?<!\S)#([0-9a-zA-Zذضصثقفغعهخحجدشسيبلاتنمكطئءؤرلاىةوزظأإآ_](greek)+)/', '<a href="/hashtag/$1" class="hashtaglink">#$1</a>', $text);

Αυτό δουλεύει με το (greek) στην άκρη ;

Επεξ/σία από Επισκέπτης
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι, δεν θα δουλέψει. Μπορείς να βάλεις μέσα στις αγκύλες όλους τους ελληνικούς χαρακτήρες (όπως έχει γίνει με τα αραβικά και δίπλα σε αυτά), κεφαλαία (αν σε ενδιαφέρουν) και μικρά, με τόνο και χωρίς.

Για περισσότερα: https://www.regular-expressions.info/charclass.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...