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