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

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

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

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

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

サンプル・プログラム

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

置換式

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

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

0149: /**
0150:  * 「,」を「、」に、「.」を「。」に置換する
0151:  * @param   string $sour元のテキスト
0152:  * @return  string 置換後テキスト
0153: */
0154: function myformat($sour) {
0155:     //置換前の文字と置換後の文字
0156:     $reg[1] = "";      $reg[2] = "";
0157:     $rep[1] = "";      $rep[2] = "";
0158: 
0159:     $dest = $sour;
0160:     foreach ($reg as $key=>$val) {
0161:         $dest = preg_replace("/{$val}/u", $rep[$key]$dest);
0162:     }
0163:     return $dest;
0164: }

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

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

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

参考サイト

(この項おわり)
header