2017-05-14 2 views
0

Sorry wenn die Frage noob klingt. Mein Problem ist, dass ich eine Textdatei habe und die Daten in die Datenbank importieren muss.Wie teilt man eine Unicode-Zeichenkette durch ein spezifiziertes Trennzeichen in PHP auf?

Der Lesevorgang ist in Ordnung, wenn ich die Zeile print_r die richtige ist.

Dann muss ich es durch den Tabulator (\ t) Trennzeichen teilen. Dann sind alle Unicode-Zeichen gebrochen.

Hier ist, wie ich versucht:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset=utf-8> 
    <title>Test page for project XY</title> 
    </head> 
    <body> 
    <h1>Test Page</h1> 
    <pre> 
    <?php 
include 'ChromePhp.php'; 
ChromePhp::log('Start read file!'); 
ini_set("default_charset", 'utf-8'); 
$handle = fopen("input.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     // process the line read. 
     print_r($line); // if print the $line here, it's fine 
     $myArray = preg_split("/[\t]/", $line); //=> broken unicode, adding u not work 
     $myArray = explode("\t", $line);//=> same 
     print_r($myArray); 
    } 

    fclose($handle); 
} else { 
    // error opening the file. 
    // ChromePhp::log('Cant open file!'); 
    print_r ('Cant open file!'); 
} 
?> 


    </pre> 
    </body> 
</html> 

Update: ich dies als Vorschläge versucht, aber immer noch nicht :(

mb_internal_encoding("UTF-8"); 
mb_regex_encoding("UTF-8"); 
$tab="\t"; 
$myArray=(mb_split($tab,$line)); 
print_r($myArray);` 
+0

Sie brauchen wahrscheinlich nur die Unicode-Modifikator: 'preg_split ("/[\ t]/u ", $ line)' – jeroen

+0

Hallo, ich habe versucht 'preg_split ("/[\ t]/u ", $ Zeile)' aber Zeichen wie erscheint immer noch :( – Tiana987642

+0

Ist Ihre PHP-Quelldatei auch utf-8? – RiggsFolly

Antwort

0

Versuchen Sie es im Terminal laufen, ich glaube, Sie haben Fehler in Sicht Versuchen Sie, Header-Anweisung in PHP zu setzen und sagen Sie es Codepage = UTF-8. Auch müssen Sie überprüfen, die PHP-Datei-Codepage selbst.

+0

Vielen Dank für die Aufmerksamkeit Es stellt sich heraus, dass die Eingabe.txt in UCS-2 codiert ist: p – Tiana987642

Verwandte Themen