php عربي

عندي مشكلة إذا اعطيت متغير قيمة بالعربي يطلع نصه حروف عربيه ونصه رموز مع إني حافظه الملف مع utf-8

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

يتوجب إعادة تشغيل restart لمخدم الويب بعد عمل التعديل على ترميز المحارف، وهي تعديل ملف php.ini

default_charset = "utf-8"

وي الملف الذي ننفذه إن كان HTML نضيف أحد العبارتين:

في بدابة ملف PHP
ini_set('default_charset', 'utf-8');
,
header('Content-type: text/html; charset=UTF-8');
//****
في شيفرة HTML
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

شكرا لك

لكن للان المشكلة نفسها

ارجو إرفاق الشيفرةالبرمجية و شرح كيفية استخدامك لطباعة الرموز العربية

<?php
ini_set('default_charset', 'utf-8');
header('Content-type: text/html; charset=UTF-8');
session_start();
//You can customize your captcha settings here


$captcha_code = '';
$captcha_image_height = 50;
$captcha_image_width = 130;
$total_characters_on_image = 5;


//The characters that can be used in the CAPTCHA code.
//avoid all confusing characters and numbers (For example: l, 1 and i)


$possible_captcha_letters = ' ب ت ث ج ح خ د ذ ر ز س ش ص ض ع غ ف ق ك ل م ن و ه ي';
$captcha_font = 'Calibri.ttf';


$random_captcha_dots = 50;
$random_captcha_lines = 25;
$captcha_text_color = "0x142864";
$captcha_noise_color = "0x142864";
$count = 0;
while ($count < $total_characters_on_image) { 
$captcha_code .= substr(
    $possible_captcha_letters,
    mt_rand(0, strlen($possible_captcha_letters)-1),1);
$count++;
}


$captcha_font_size = $captcha_image_height * 0.65;
$captcha_image = @imagecreate(
    $captcha_image_width,
    $captcha_image_height
    );


/* setting the background, text and noise colours here */
$background_color = imagecolorallocate(
    $captcha_image,
    255,
    255,
    255
    );


$array_text_color = hextorgb($captcha_text_color);
$captcha_text_color = imagecolorallocate(
    $captcha_image,
    $array_text_color['red'],
    $array_text_color['green'],
    $array_text_color['blue']
    );


$array_noise_color = hextorgb($captcha_noise_color);
$image_noise_color = imagecolorallocate(
    $captcha_image,
    $array_noise_color['red'],
    $array_noise_color['green'],
    $array_noise_color['blue']
    );


/* Generate random dots in background of the captcha image */
for( $count=0; $count<$random_captcha_dots; $count++ ) {
imagefilledellipse(
    $captcha_image,
    mt_rand(0,$captcha_image_width),
    mt_rand(0,$captcha_image_height),
    2,
    3,
    $image_noise_color
    );
}


/* Generate random lines in background of the captcha image */
for( $count=0; $count<$random_captcha_lines; $count++ ) {
imageline(
    $captcha_image,
    mt_rand(0,$captcha_image_width),
    mt_rand(0,$captcha_image_height),
    mt_rand(0,$captcha_image_width),
    mt_rand(0,$captcha_image_height),
    $image_noise_color
    );
}


/* Create a text box and add 6 captcha letters code in it */
$text_box = imagettfbbox(
    $captcha_font_size,
    0,
    $captcha_font,
    $captcha_code
    ); 
$x = ($captcha_image_width - $text_box[4])/2;
$y = ($captcha_image_height - $text_box[5])/2;
imagettftext(
    $captcha_image,
    $captcha_font_size,
    0,
    $x,
    $y,
    $captcha_text_color,
    $captcha_font,
    $captcha_code
    );


/* Show captcha image in the html page */
// defining the image type to be shown in browser widow
header('Content-Type: image/jpeg'); 
imagejpeg($captcha_image); //showing the image
imagedestroy($captcha_image); //destroying the image instance
$_SESSION['captcha'] = $captcha_code;


function hextorgb ($hexstring){
  $integar = hexdec($hexstring);
  return array("red" => 0xFF & ($integar >> 0x10),
               "green" => 0xFF & ($integar >> 0x8),
               "blue" => 0xFF & $integar);
               }
?>

هذا الكود عشان بسوي اختبار هل انت روبوت بس بالحروف العربيه

<?php

ini_set('default_charset', 'utf-8');

header('Content-type: text/html; charset=UTF-8');

session_start();

$status = '';

if ( isset($_POST['captcha']) && ($_POST['captcha']!="") ){

// Validation: Checking entered captcha code with the generated captcha code

if(strcasecmp($_SESSION['captcha'], $_POST['captcha']) != 0){

// Note: the captcha code is compared case insensitively.

// if you want case sensitive match, update the check above to strcmp()

$status = "<p style='color:#FFFFFF; font-size:20px'><span style='background-color:#FF0000;'>Entered captcha code does not match! Kindly try again.</span></p>";

}else{

$status = "<p style='color:#FFFFFF; font-size:20px'><span style='background-color:#46ab4a;'>Your captcha code is match.</span></p>";    

    }

}

?>

<html>

<head>

<title>Captcha</title>

<meta charset="utf-8">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<body>

<?php echo $status; ?>

<form name="form" method="post" action="" accept-charset="UTF-8">

<label><strong>أدخل الرمز:</strong></label><br />

<input type="text" name="captcha" />

<p><br /><img src="captchaa.php?rand=<?php echo rand(); ?>" id='captcha_image'></p>

<p>الحروف غير واضحه؟<a href='javascript: refreshCaptcha();'>اضغط هنا</a> لإعادة التحميل</p>

<input type="submit" name="submit" value="أرسل">

</form>

<br /><br />

<script>

//Refresh Captcha

function refreshCaptcha(){

    var img = document.images['captcha_image'];

    img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random()*1000;

}

</script>

</body>

</html>

هذا كود html للواجهه

ربما المشكلة من التعامل مع السلاسل النصية لديك، حيث أن تخزين محارف عربية يتم على ضعف عدد البايتات لمحارف الانكليزي و تستخدم دوال  Multibyte String Functions أرجو القراءة أكثر عنهم

و ربما عليك استخدام أيضاً في أول الملف

mb_internal_encoding('UTF-8');