Maison >développement back-end >tutoriel php >PHP implémente une méthode d'interception de n caractères commençant à une certaine position dans un document GBK

PHP implémente une méthode d'interception de n caractères commençant à une certaine position dans un document GBK

墨辰丷
墨辰丷original
2018-05-25 09:42:321278parcourir

Cet article présente principalement la méthode d'interception de n caractères à partir d'une certaine position dans le document GBK en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

cut.php :

#!/usr/bin/php
<?php
define(&#39;INPUT_FILE&#39;, &#39;t.txt&#39;);
define(&#39;OUTPUT_FILE&#39;, &#39;a.txt&#39;);
$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, &#39;rb&#39;);
$point = 0; //current byte position
$string = &#39;&#39;; 
while(ftell($fp) < $file_size) {
  if($point >= $pos + $len) break;$byte = fread($fp, 1); 
  //php version >= 5.4
  $char = unpack(&#39;C&#39;, $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 représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

Traitement de l'ouverture du texte sublimeGBKFormat chinois tronqué

Détails comment résoudre les caractères chinois tronqués dans Sublime Text lors de l'ouverture du format GBK

php utilise iconv pour convertir la chaîne de GBKMéthode de conversion en jeu de caractères UTF8

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn