2013-10-10 4 views
2

Я вижу что-то странное!foreach на массиве UTF8

Престол, вот мой массив:

$array = array('حساب داری', 'صنایع', 'مهندسی سخت افزار', 'مهندسی عمران'); 

print_r($array): 

Array 
(
    [0] => حساب داری 
    [1] => صنایع 
    [2] => مهندسی سخت افزار 
    [3] => مهندسی عمران 
) 

Значения выше массива содержит UTF-8 символов, теперь Еогеасп:

$test = ''; 
    foreach($array as $key => $value){ 
     $test.= " ('1', '$value'), "; 
    } 

Выход есть:

('1', 'حساب داری'), ('1', 'صنایع'), ('1', 'مهندسی سخت افزار'), ('1', 'مهندسی عمران'), 

Как вы видите, все это неправильно ....

Почему это происходит и как я это исправить?

Заранее спасибо

P.S: используя некоторые UTF-8 функций декодирования не работают.

+1

Кажется, что проблема с правом на левый текст. – idmean

+0

попробуйте использовать '$ test. = Sprintf (" (% d ','% s ​​') ", $ key, $ value)' – Ethan

+0

@wumm nope, см. Первую скобку, имеет 3 – behz4d

ответ

5

Начало строки интерпретируется как слева направо, а остальное как справа налево. Вы можете решить глюк, установив весь документ справа налево:

<html dir="rtl"> 

Если вы хотите, чтобы документ, который будет показан в основном слева направо вы должны добавить некоторые управляющие символы после каждого Арабская строка для изменения LTR, поскольку цифры и знаки препинания недостаточно «сильны». Если ваш вывод содержит буквы LTR (например, A), он также будет отображаться как ожидалось; test the:

foreach($array as $key => $value){ 
    $test.= " ('1', '$value&lrm;'), "; 
} 

foreach($array as $key => $value){ 
    $test.= " ('A', '$value'), "; 
} 
+0

LOL, rtl была проблема! благодаря – behz4d

Смежные вопросы