私のコードは次のとおりです。ユニコード文字列をintにキャストするにはどうすればよいですか?
<?php
echo((int)("١٩")); //Number is 19
?>
しかし、出力は、2つのタイプの数、使用str_replace
関数の2つの配列を作る代わりに、19
私のコードは次のとおりです。ユニコード文字列をintにキャストするにはどうすればよいですか?
<?php
echo((int)("١٩")); //Number is 19
?>
しかし、出力は、2つのタイプの数、使用str_replace
関数の2つの配列を作る代わりに、19
の0です。この例ではBangla文字を使用していますが、あなたの言語に変更する必要があります。
function convert_number($your_num){
$find = array("০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯");
$replace = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
return str_replace($find, $replace, $your_num);
}
あなたの番号を変換する必要がある機能を呼び出すだけです。
echo convert_number("১৯");
Outoput:19
ありがとう、しかし、私はより良い答えが欲しい。 – javadaskari
よろしくお願いします。 –
PHPキャストがstrtod
に依存していると、彼らは数字を意味althought ASCIIだけではなくアラビア語INDIC UTF-8文字を管理します。それらをキャストしている文字からの変換がないので、ゼロを返します。
\x{0660}-\x{0669}
(数字コード)のようなものに対してテストすると、それをASCII同等のものに変換してから適切なタイプにキャストする必要があります。
tnxですが、これは悪い考えです! – javadaskari
おそらくあなたはユーザー入力を制限するべきです。 – Muihlinn
ユーザー入力はtrueです! – javadaskari
@javadaskari、@ Frayne Konokの関数convert_numberとして修正しました。入力番号がasciiでも有効です(有効なままです)。
https://bugs.php.netで、(int) "string"がutf-8文字列を受け入れるようになったので、それがそれらの文字を受け入れるはずであるというバグを開くことが合理的です。 Phpは一般的なユーザーの入力を処理する可能性が高く、ユーザーが識別した大文字小文字は、ユーザーが予期しない方法で動作するその関数の他の使用に遭遇する可能性があります。
しかし、あなたが発見したようなバグは、私のようにPHPで "修正"され、合理的であることを認めるものではありません。
なぜあなたは数値を表すために非ASCII値を使用していますか? –
@ iam-decoderの値は、ユーザーがサーバーに送信します。 – javadaskari
@ iam-decoderと私は値がasciiかどうかわからない! – javadaskari