header

正規表現で日本語と半角英数字の間にスペースを挿入する

(1/2)

テキスト中に全角文字と半角文字が混在していると、その間が詰まって見にくいことがある。 そこで、ホームページなどでも、全角文字と半角文字の間に半角スペースを挿入することがよく行われる。 いちいち手作業で半角スペースを挿入するのも面倒なので、 今回は、PHP で自動的に半角スペースを挿入するプログラムを考えてみることにする。

考え方

今回は、全角平仮名と漢字、半角英数字のみを対象に考えてみることにする。
半角スペースを挿入する必要がある位置を■で示すと、

  1. 半角英数字が1つ以上並んでいる■日本語文字が1つ以上並んでいる
  2. 日本語文字が1つ以上並んでいる■半角英数字が1つ以上並んでいる

の2つのケースに限られる。
各々を正規表現であらわすと

  1. ([0-9A-Za-z]+)([ぁ-煕]+)
  2. ([ぁ-煕]+)([0-9A-Za-z]+)

となる。

あとは、「全角カンマ/ピリオドを句読点に置換する」で処理したのと同じように、1⇒2の順に半角スペースを挿入してやればよい。

(この項つづく)