Maison >développement back-end >tutoriel php >Explication détaillée d'un exemple de code permettant à PHP d'intercepter n caractères commençant à une certaine position dans un document GBK
L'éditeur suivant vous proposera une méthode PHP pour intercepter n caractères commençant à une certaine position dans un document GBK. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur pour y jeter un œil
cut.php :
#!/usr/bin/php <?php define('INPUT_FILE', 't.txt'); define('OUTPUT_FILE', 'a.txt'); $pos = max(intval($argv[1]), 0); $len = max(intval($argv[2]), 0); $file_size = filesize(INPUT_FILE); if($pos >= $file_size) exit; $fp = fopen(INPUT_FILE, 'rb'); $point = 0; //current byte position $string = ''; while(ftell($fp) < $file_size) { if($point >= $pos + $len) break;$byte = fread($fp, 1); //php version >= 5.4 $char = unpack('C', $byte)[1]; if($char <= 0x7f) { //single byte if($point >= $pos) $string .= $byte; $point += 1; continue; } else { //double bytes if($point >= $pos) { $string .= $byte.fread($fp, 1); } else { fseek($fp, 1, SEEK_CUR); } $point += 1; continue; } } fclose($fp); file_put_contents(OUTPUT_FILE, $string); ?>
Contenu t.txt du fichier source :
dkei20王nnso
Commande de test :
./cut.php 6 1
Afficher les résultats :
hexdump -C t.txt && hexdump -C a.txt
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!