2013-07-05 36 views
5

Tôi đang cố gắng tạo mã thay thế văn bản tiếng Ả Rập để được hỗ trợ trong các chương trình không được hỗ trợ tiếng Ả Rập
trong đó tôi sẽ cần phải đảo ngược văn bản sau khi thay thế. thứ thay vì kết quả mong muốnStrRev() Hỗ trợ liều lượng UTF-8

đây là Code:

<?php 
$string = "اهلا بك"; 
echo "$string <br>"; 
$Reversed = strrev($string); 
echo "<br><b>After Reverse</b><br><br>"; 
echo "<br> $Reversed"; 
?> 

kết quả:

اهلا بك 

After Reverse 


�٨� �؄ه٧ 

tôi cần nó để được đường đi nó có bị đảo ngược không? không phải GARBAGE !!

+0

Mặc dù bạn đã trả lời câu hỏi của riêng bạn , có nhiều chức năng cần được thay thế để có thể xử lý UTF-8 đúng cách. http://stackoverflow.com/questions/16858915/migrating-a-php-application-to-handle-utf-8/16862181#16862181 – Danack

Trả lời

9

để làm cho điều đó strrev() hỗ trợ UTF-8 bạn cần phải sử dụng này Function

function utf8_strrev($str){ 
    preg_match_all('/./us', $str, $ar); 
    return join('', array_reverse($ar[0])); 
} 

vì vậy chúng tôi sẽ chage strrev() trong mã của chúng tôi để utf8_strev():

$string = "اهلا بك"; 
echo "$string <br>"; 
$Reversed = utf8_strrev($string); // here we have changed it 
echo "<br><b>After Reverse</b><br><br>"; 
echo "<br> $Reversed"; 

và kết quả là:

اهلا بك 

After Reverse 


كب الها 
+0

Phải thừa nhận rằng, tôi không nói tiếng Ả Rập; nhưng điều đó không thực sự giống như các nhân vật với tôi –

+0

@MarkBaker, nhưng bằng tiếng Ả Rập khi chúng ta đặt nhân vật lại với nhau, nó trông khác với vị trí của nó ở phía sau hoặc phía trước của từ và thậm chí nếu nó ở giữa –

+0

Lạ lùng: Tôi chắc chắn nó hợp lý nếu bạn quen với nó ... Tôi đoán tiếng Hy Lạp có một số dấu tích của điều đó, với σ khi được sử dụng ở đầu hoặc ở giữa hoặc một từ, và ς khi được sử dụng ở cuối –