2016-07-19 20 views
2

Hallo Ich habe ein Problem in meinem PHP-Code: Ich brauche eine txt-Datei zu öffnen file_get_content verwenden, das Verzeichnis, in die txt-Datei enthält arabische Zeichen meinen Code:php file_get_content Arabisch Charaktere

$URLX = "C:/server files/BN/public_html" ; 
$BookName = "الإضافةإلىمفاوضةمالكحسون" ; 
$eachChapiter[$x] = "مالكمالكحسون" ; 

$content = file_get_contents($URLX."/".$BookName."/".str_replace(' ', '', $eachChapiter[$x]).".txt"); 

der Fehler Ausgabe:

WARNING: FILE_GET_CONTENTS(C:/SERVER FILES/BN/PUBLIC_HTML/الإضافةإلىمفاوضةمالكحسون/مالكمالكحسون.TXT): FAILED TO OPEN STREAM: NO SUCH FILE OR DIRECTORY IN C:\XAMPP\HTDOCS\LIBRARY\SEARCH\SEARCH.PHP ON LINE 30 

NOTICE: UNDEFINED OFFSET: 1 IN C:\XAMPP\HTDOCS\LIBRARY\SEARCH\SEARCH.PHP ON LINE 38 
+1

php ist nicht Unicode bekannt. Sie können die Standard-String-Funktionen von PHP nicht für Unicode-Text verwenden, ohne den Text zu zerstören. Verwenden Sie stattdessen die Funktionen 'mb _ *()', die Unicode-fähig sind. –

+1

Laut [dieser Frage und Antwort] (http://stackoverflow.com/questions/708017/can-a-php-file-name-oder-) Die Dateifunktionen von PHP können keine Dateien öffnen, deren Pfade außerhalb von ISO-8859-1 liegen. Arabisch ist nicht Teil dieser Kodierung, also ist es nicht möglich. Die 'mb _ *()' -Familie von Funktionen wird Ihnen hier nicht helfen. –

Antwort

1

Danke @Mike für die Hilfe bei der Korrektur der Antwort. So, nach der Frage und OP OS scheint es, dass Sie (OP) eine Variante von this Fehler auftreten.

Und auf diesen Link diskutiert, können Sie den folgenden Code verwenden, um den Dateinamen Codierung

...  

$final_url = $URLX."/".$BookName."/".str_replace(' ', '', $eachChapiter[$x]); 

mb_detect_encoding($final_url, 'UTF-8', true)) ? utf8_decode($final_url) : $final_url; 
$content = file_get_contents($final_url).".txt"); 

Denken Sie daran zu erkennen, dass dieser Code Probleme schaffen wird (wieder auf diesen Link diskutiert) auf einem Linux-Server. Wenn Sie also eine Linux-Produktionsumgebung verwenden, können Sie die dort vorgeschlagene Lösung anwenden.

+0

Hmmm ... ich bin mir nicht sicher, ob das in * diesem * Fall zutrifft, wo das Problem mit einem arabischen * Dateinamen zu tun hat. * Es klingt für mich so, als ob die andere Antwort näher an der Marke in * diesem * sein könnte. Ich stimme zu, dass Ihre Antwort in * anderen * Fällen, in denen multinationale codierte Zeichenketten verwendet werden, angemessen ist. –

+0

Verwenden Sie Windows OS? –

+0

Schlagen Sie vor, dass Sie Ihre Antwort noch einmal bearbeiten: "Verwenden Sie Windows OS?" Es scheint mir sicher, dass er * ist. * Bearbeiten Sie also Ihre Antwort, um uns zu sagen, * was * Sie denken, könnte relevant sein, "vorausgesetzt", dass es tatsächlich Windows ist. **: -) ** * "Verwenden Sie Windows-Betriebssystem? Weil, wenn ja ..." * (etc.) –