تابع php برای تبدیل ی یه ي در یک صفحه 1256

bono056

Member
سلام
من تابع PHP ای میخوام که رشته های ورودی های کاربر رو چک کنه و در صورتی که "ی" فارسی توش هست به "ي" عربی تبدیلش کنه. صفحات برنامه هم 1256 هستش.
من این دو تا تابع رو که با str_replace و ord هستش امتحان کردم ولی جفتشون فقط تو حالتی که انکدینگ صفحه utf8 هستش جواب میده. وقتی انکدینگ صفحه 1256 میشه ی رو تبدیل نمیکنه.
حالتی که تابع تبدیل رو یه فایل خارجی با انکدیگ utf-8 کنم و فایل اصلی 1256 باشه رو هم امتحان کردم نشد. کسی راه حلی داره.

کد:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
<title>Untitled Document</title>
</head>

<body dir="rtl">

<?php 
	function convertChars($a) { 
		 //convert persian 'ye' and 'ke' to arabic
		 $b=str_replace('ی','ي',$a);
		 $c=str_replace('ک','ك',$b);
		 return $c;
	}

	function charchange($string) {
		  for ($i=0;$i<strlen($string);$i=$i+2) {
		   $chr1 = $string{$i};
		   $chr2= $string{$i+1};
 
		   $ord1 = ord($chr1);
		   $ord2 = ord($chr2);
		   if ($ord1==219 and $ord2==140) {
		        $string{$i}= chr(217);
		        $string{$i+1}=chr(138);
		   }
		   if ($ord1==218 and $ord2==169) {
			    $string{$i}= chr(217);
		        $string{$i+1}=chr(131);
		   }
		   if ($ord1==32) {
		        $i--;
		   }
	  }
	  return ($string);
}
	foreach ($_POST as $field => $value) {
		$_POST[$field] = convertChars($value);
		$_POST[$field] = charchange($value);
		echo $_POST[$field]."<br>";
	}

	$f_tfTest = (isset($_POST['tfTest'])) ? ($_POST['tfTest']) : '';
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	}
?>

<form name="main-form" method="post">
ورود:<br>
<input class="edit-box" type="text" name="tfTest" value="<?php echo $f_tfTest ?>" maxlength="200" dir="rtl" style="width: 500px">
<br><br>
<input type="submit" value="OK">
</form>
</body>
</html>
 

datasun

Member
با نرم افزار دیریم وی ویر میتونی این کار رو بکنی اتو مات میزاره رو حالت utf-8 بعد مشکلت حل مشیه یک امتحان بکن
 
آخرین ویرایش:

Y.P.Y

Well-Known Member
سلام،
عزیز iconv رو برای همین کار گذاشتن... از اون استفاده کنید.
 

bono056

Member
با یه سری تغییرات تو تابع اول جواب داد:
کد:
function convertChars($a) { 
	 //convert persian 'ye' and 'ke' to arabic
	 $ye_persian=array(chr(236),'ی');
	 $ke_persian=array(chr(152),'ک');
	 
	 $b=str_replace($ye_persian,chr(237),$a);
	 $b=str_replace($ke_persian,chr(223),$b);
	return $b;
}
 

جدیدترین ارسال ها

بالا