2017-06-11 2 views
-2

Je voudrais dépouiller Cantillation de cordes hébreu, pas Nikkud. J'ai trouvé ce code JS. Comment je fais ça en PHP?Comment remplacer les caractères hébreux Cantillation (pas Nikkud) de la chaîne avec PHP?

function stripCantillation(str){ 
    return str.replace(/[\u0591-\u05AF]/g,"").replace("׀", "").replace("׃","").replace("־",""); 
} 

texte hébreu avec Cantillation

בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ

texte hébreu sans Cantillation

בְּרֵאשִׁית בָּרָא אֱלֹהִים אֵת הַשָּׁמַיִם וְאֵת הָאָרֶץ

Répondre

0

C'est le php convivial modèle regex qui comprend tous vos personnages unicode:

/[\x{0591}-\x{05AF}\x{05BE}\x{05C0}\x{05C3}]/u

(Pattern Demo)
Pour exprimer ces caractères unicode, les codes de 4 caractères sont enveloppés entre accolades {} et préfixé avec \x. Le drapeau u doit suivre l'expression. Le contenu de la classe de caractères (entre les crochets []) commence par une plage de caractères, suivie de trois caractères individuels.

Ceci est la mise en oeuvre échantillon du modèle avec php (ce que je faisais tester) (PHP Demo):

$input='בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ'; 
$output=preg_replace('/[\x{0591}-\x{05AF}\x{05BE}\x{05C0}\x{05C3}]/u','',$input); 
if($input===$output){ 
    echo "no change"; 
}else{ 
    echo $input,"\n"; 
    echo $output; 
} 

Sortie:

בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ 
בְּרֵאשִׁית בָּרָא אֱלֹהִים אֵת הַשָּׁמַיִם וְאֵת הָאָֽרֶץ 

Ceci est une table mise en surbrillance des caractères sera remplacé: Source de l'image: http://unicode.org/charts/PDF/U0590.pdf

enter image description here

+0

Merci beaucoup! Cela a fonctionné parfaitement et vous m'avez donné toutes les ressources dont j'ai besoin pour apprendre à propos de regex et de l'hébreu Unicode! Je vais étudier à leur sujet plus. Je vous remercie ! –