1.1 部分文字列を抽出する
文字列全体ではなく、文字列の一部を抽出/修正したい。例えば、固定長のレコードを読み込んで、個々のフィールドを抽出する場合など、このような処理が必要になる。
- substrを使う方法。
$value = substr($string, $offset, $count); $value = substr($string, $offset); substr($string, $offset, $count) = $newstring; substr($string, $offset, $count, $newstring); substr($string, $offset) = $newtail;
- unpackを使う方法
# 5バイト文字列を取り出し、3バイトスキップし、 # 2つの8バイト文字列を取り出し、残りの文字列を取り出す。 # (注意: 処理できるのはASCIIデータのみで、Unicodeデータは処理できない) ($leading, $s1, $s2, $trailing) = unpack("A5 x3 A8 A8 A*", $data); # 5バイトの境界で分割する。 @fivers = unpack("A5" x (length($string)/5), $string); # 文字列を個々の1バイト文字に分割する。 @chars = unpack("A1" x length($string), $string);