Php 用带条件的Unicode字符代码将英文数字替换为波斯语数字
我编写了这个PHP函数:Php 用带条件的Unicode字符代码将英文数字替换为波斯语数字,php,unicode,Php,Unicode,我编写了这个PHP函数: <?php function persian_digits($text) { $persian_unicode = array( "1" => '۱', "2" => '۲', "3" => '۳', "4" => '۴',
<?php
function persian_digits($text) {
$persian_unicode = array(
"1" => '۱',
"2" => '۲',
"3" => '۳',
"4" => '۴',
"5" => '۵',
"6" => '۶',
"7" => '۷',
"8" => '۸',
"9" => '۹',
"0" => '۰'
);
foreach ($persian_unicode as $key => $value) {
$text = str_replace($key, $value, $text);
}
return $text;
}
?>
当我给它一个输入时,这个函数会将所有数字替换为波斯语的等价数字。
但是输入有URL,例如
,当替换发生时,所有URL和HTML标记都会出现波斯数字问题
请帮助我找到一种方法,在简单文本中,而不是在URL和HTML标记中,将英语数字替换为波斯语数字。
谢谢
(对不起我的英语)使用以下功能:
<?php
/* Originally written by Farhadi , www.farhadi.ir */
function convertToFarsi($matches) {
$mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME);
$mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal'];
if($mps_jd_decimal == true)
//$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>");
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫");
else
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", ".");
$english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".");
$out = '';
if (isset($matches[1])) {
return str_replace($english_array, $farsi_array, $matches[1]);
}
return $matches[0];
}
function farsi_num($num,$fake = null,$fake2=null) {
return preg_replace_callback('/(?:&#\d{2,4};)|(\d+[\.\d]*)|(?:[a-z](?:[\x00-\x3B\x3D-\x7F]|<\s*[^>]+>)*)|<\s*[^>]+>/i', 'convertToFarsi', $num);
}
function english_num($num) {
$mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME);
$mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal'];
if($mps_jd_decimal == true)
//$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>");
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫");
else
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", ".");
$english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".");
return str_replace($farsi_array, $english_array, $num);
}
?>
使用以下功能:
<?php
/* Originally written by Farhadi , www.farhadi.ir */
function convertToFarsi($matches) {
$mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME);
$mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal'];
if($mps_jd_decimal == true)
//$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>");
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫");
else
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", ".");
$english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".");
$out = '';
if (isset($matches[1])) {
return str_replace($english_array, $farsi_array, $matches[1]);
}
return $matches[0];
}
function farsi_num($num,$fake = null,$fake2=null) {
return preg_replace_callback('/(?:&#\d{2,4};)|(\d+[\.\d]*)|(?:[a-z](?:[\x00-\x3B\x3D-\x7F]|<\s*[^>]+>)*)|<\s*[^>]+>/i', 'convertToFarsi', $num);
}
function english_num($num) {
$mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME);
$mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal'];
if($mps_jd_decimal == true)
//$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>");
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫");
else
$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", ".");
$english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".");
return str_replace($farsi_array, $english_array, $num);
}
?>
您可以使用此功能
function translateDigits($str) {
$newstring=str_replace(array('0','1','2','3','4','5','6','7','8','9'), array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'), $str);
return $newstring;
}
你可以使用这个功能
function translateDigits($str) {
$newstring=str_replace(array('0','1','2','3','4','5','6','7','8','9'), array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'), $str);
return $newstring;
}
我忘记了Unicode代码后面的分号!3到9位数!我忘记了Unicode代码后面的分号!3到9位数!