2017-06-12 3 views
0

3つのヘブライ語のUnicode文字を別の3つのヘブライ語のUnicode文字に置き換える必要があります。私はPHP構文を調べて検索しましたが、これは私が書くことができる最高のものです。それは働き、仕事をします。PHP Regex Preg_replaceヘブライ語のUnicodeから別のUnicode

これは、私が少し小さな機能に変える前に、これがUnicode文字をPHPの別のUnicode文字に置き換える最も最適な方法かどうかを知りたいと思っています。

これはPHPでより良い構文がありますか?

$re1 = '/[\x{05B1}]/u'; 
$re2 = '/[\x{05B2}]/u'; 
$re3 = '/[\x{05B3}]/u'; 

$subst1 = json_decode('"\u05B6"'); 
$subst2 = json_decode('"\u05B0"'); 
$subst3 = json_decode('"\u05B8"'); 

//Replace (Niqqud with Cantillation) with (just Niqqud) 
$bible_content = preg_replace($re1, $subst1, $bible_content); 
$bible_content = preg_replace($re2, $subst2, $bible_content); 
$bible_content = preg_replace($re3, $subst3, $bible_content); 

開始入力$ bible_content用:

וַ/יִּקְרָאאֱלֹהִיםלָ/אוֹריוֹםוְ/לַ/חֹשֶׁךְקָרָאלָיְלָהוַ/יְהִיעֶרֶבוַ/יְהִיבֹקֶריוֹםאֶחָד: אַשְׁרֵיהָ/אִישׁאֲשֶׁרלֹא $のためのהָלַךְבַּ/עֲצַתרְשָׁעִיםוּ/בְ/דֶרֶךְחַטָּאִיםלֹאעָמָדוּ/בְ/מוֹשַׁבלֵצִיםלֹאיָשָׁב: חֳ

の予想される出力bible_content:

וַ/יִּקְרָאאֶלֹהִיםלָ/אוֹריוֹםוְ/לַ/חֹשֶׁךְקָרָאלָיְלָהוַ/יְהִיעֶרֶבוַ/יְהִיבֹקֶריוֹםאֶחָד: אַשְׁרֵיהָ/אִישׁאְשֶׁרלֹאהָלַךְבַּ/עְצַתרְשָׁעִיםוּ/בְ/דֶרֶךְחַטָּאִים לֹאעָמָדוּ/בְ/מוֹשַׁבלֵצִיםלֹאיָשָׁב: חָ

+0

オンラインでテストするとコードが動作しないようです。このコードブロックの前に他の文字セット宣言(またはそれに類するもの)がありますか?オンラインテスト:http://sandbox.onlinephpfunctions.com/code/00399e52af826fdd448679ed568e01d842e81920 – mickmackusa

+0

入力と出力を編集しました。フォワードスラッシュはそこにあることができます。 –

+0

第3のものは見つけられませんでした。私はちょうど例として最後の例として1つの手紙を入れました、今それはすべての3文字を持つ必要があります。 –

答えて

1

PHP 7.0は、文字列リテラル内のUnicode文字の新しい構文を持っています。さらに、strtr関数を使用して、文字から文字への置換を処理することができます。今

$from = "\u{05B1}\u{05B2}\u{05B3}"; 
$to = "\u{05B6}\u{05B0}\u{05B8}"; 

echo strtr($bible_content, $from, $to). "\n"; 

、私はヘブライ語を読んで(あるいは、それが適切にRTLを流し行い、明らかに:P)をすることはできませんので、あなたはそれが正しいことをしたかどうかを判断する必要があります。

+0

これはPHP 7.0!どうもありがとうございます !!! –

+0

ちょうど気づいた。他の人がコードを取って試してみたい場合は06B0は$のために05B0でなければならない。 –

+0

タイポを修正した。 (明らかに、違いは分かりません:P) – Amadan

関連する問題