正規表現で全角カンマ/ピリオドを句読点に置換する

(1/1)
横書きで書かれたコンテンツの中には、句読点をカンマとピリオドで表したものがある。こういったコンテンツを引用する際、句点・読点に置換したい場合がある。
PHPと正規表現を使えば、簡単に置換できる。

(2021年8月16日)PHP8対応,リファレンスチェック改良

サンプル・プログラムの実行例

正規表現で全角カンマ/ピリオドを句読点に置換する

サンプル・プログラム

圧縮ファイルの内容
kutoten.phpサンプル・プログラム本体

置換式

今回の置換は
  • 「,」⇒「、」
  • 「.」⇒「。」
の2つを別々に行うことにする。置換のために  preg_replace  関数を用いることにする。

サンプル・プログラムの解説

 149: /**
 150:  * 「,」を「、」に、「.」を「。」に置換する
 151:  * @param   string $sour 元のテキスト
 152:  * @return  string 置換後テキスト
 153: */
 154: function myformat($sour) {
 155:     //置換前の文字と置換後の文字
 156:     $reg[1] = ",";     $reg[2] = ".";
 157:     $rep[1] = "、";     $rep[2] = "。";
 158: 
 159:     $dest = $sour;
 160:     foreach ($reg as $key=>$val) {
 161:         $dest = preg_replace("/{$val}/u", $rep[$key], $dest);
 162:     }
 163:     return $dest;
 164: }

置換を行うためにユーザー関数 myformat を用意した。

今回は2段階の置換を行うわけだが、多段階にも対応できるよう、配列変数 $reg に合致パターン(正規表現)を、$rep に置換パターンを用意し、foreachで順次置換するようにした。
実際に置換を行うのは  preg_replace  関数である。内部文字コードはUTF-8を指定することで日本語処理ができるようにしており、正規表現の修飾子 u を追加している。
その他は、これまでと同様、おまけの処理である。

しかし、このプログラムには弱点がある。
全角小数で用いられる小数「.」や、整数部分の桁区切り文字である「,」までも、句読点に変換してしまうのである。
次回は、この課題を解決することにする。

参考サイト

(この項おわり)
header