php - 如何将波斯/阿拉伯数字从字符串转换为英文数字?
问题描述
我有一个波斯语网站。我网站用户的键盘通常是波斯语(或阿拉伯语)。所以他们的密码有时会不匹配。
我有一个用于他们的用户名(手机号码)的功能,它将波斯/阿拉伯数字转换为英语:
function convert_digits_to_en($entry){
$fmt = numfmt_create('fa', NumberFormatter::DECIMAL);
return numfmt_parse($fmt, $entry);
}
如果条目包含所有数字,它将起作用。
ie۰۹۱۲۳۵۶۵۴۹۸
也将转换09123565498
为。
问题是当条目同时包含字符和数字(如密码)时。即test۰۹۱۲
。我需要将其转换为test0912
. 我当前的函数为该条目返回一个空字符串。知道如何解决吗?
解决方案
我在laravel中使用正则表达式搜索了很多使用波斯字符(如1234)验证波斯电话号码,但没有找到合适的答案,所以我决定将peisan数字更改为英文并在自己身上验证,而不是验证波斯号码,它对我有很大帮助,希望这个帮助:
if (is_numeric($mobile) && strlen($mobile) == 11) {
// if number in english
}else{
$mobile = str_split($mobile , 2);
if (count($mobile) != 11) {
return redirect()->back()->withErrors('فرمت شماره موبایل باید عدد و ۱۱ رقم باشد');
}
foreach ($mobile as $key => $number) {
if ($number == '۰') {
$mobile[$key] = 0;
}elseif ($number == '۱') {
$mobile[$key] = 1;
}elseif ($number == '۲') {
$mobile[$key] = 2;
}elseif ($number == '۳') {
$mobile[$key] = 3;
}elseif ($number == '۴') {
$mobile[$key] = 4;
}elseif ($number == '۵') {
$mobile[$key] = 5;
}elseif ($number == '۶') {
$mobile[$key] = 6;
}elseif ($number == '۷') {
$mobile[$key] = 7;
}elseif ($number == '۸') {
$mobile[$key] = 8;
}elseif ($number == '۹') {
$mobile[$key] = 9;
}
}
$mobile = implode($mobile);
if(is_numeric($mobile) == false){
return redirect()->back()->withErrors('فرمت شماره موبایل باید عدد و ۱۱ رقم باشد');
}
}
推荐阅读
- google-cloud-platform - GCP 监控代理不断增加内存使用量
- rust - 使用正确的(特定于目标的)编译器链接到外部对象
- python - 如何可视化最近的加密交换订单
- flutter - 使用 Get.put 在 Flutter 中创建类的实例
- r - 如何将 Web of Science 高级查询变成 R 中的正则表达式?
- sass - “粗鲁。” 未被识别为内部或外部命令、可运行程序或批处理文件
- react-native - NPM 卡在理想树上:定时理想树
- html - 使用 HTML 并排创建两个表格
- api - 通过一个批处理文件运行多个soapui项目
- angular - 将复杂对象传递给 Web API 时对象值接收不正确