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

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

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

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

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

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

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

Σύνδεση

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

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