まず最初に。これは機能していましたが、問題の文字の代わりに別の文字列を選択しても機能します。
次のコードは、ファイル内で必要なデータ ブロックのすべてのオカレンスを検索するために使用されています。各ブロックは「3476 DSR」で始まり、「Å」で終わります。キャラクターの仕様は次のとおりです。
DEC OCT HEX BIN シンボル HTMLNumber HTMLName 説明
197 305 C5 11000101 Å \Å\; \&指輪\; 上にリングが付いたラテン大文字 A
コードは次のとおりです。
$path = 'report';
$file = $_POST['select'];
$filepath = $path . DIRECTORY_SEPARATOR . $file;
$report = file_get_contents($filepath,'r');
$string1 = "3476 DSR";
$string2 = "Å";
preg_match_all("(".preg_quote($string1).".*?".preg_quote($string2).")s",$report,$matches);
echo '<div class="output">';
foreach ($matches[0] as $value) {
echo "<pre>";
echo $value;
echo "</pre>";
}
echo '</div>';
これは問題なく機能していましたが、調査中に、拡張ASCII文字が八角形内の疑問符のように見えるものに何らかの形で置き換えられていることがわかりました。元のキャラクターを元に戻した後も、まだ機能しません。アスキー文字に別の文字列を使用すると、コードは正常に機能しますが、明らかに正しいデータが得られません。
これに関連するものを見つけるのは困難であり、上記のさまざまな識別子を使用してみましたが、うまくいきませんでした。
ここで何が問題なのか知っている人はいますか?