パターン検索の結果を部分的に置換する

パターンで検索された結果を部分に分けて、それを置換後に残すこともできます。例をあげると「123-4567Jのような7桁の番号から、ハイフン(-)を取り除くことを考えてみましょう。このような場合、「3桁の数字の後にハイフンが続き、その後に4桁の数字が続く」というパターンを検索して、f3桁の数字」と「4桁の数字」は残し、ハイフンを削除する(空文字列に置換する)とうまくいきます。パターンを部分に分けるには、ereg関数の場合と同様に括弧を使用します。また、置換する文字列を指定する際には、「¥¥1」「¥¥2」などの記号を使用すると、パターン内の各部分をそのまま残すことができます。最初に括弧で囲んだ部位が「¥¥1」に対応し、その次に括弧で囲んだ部位が「¥¥2」に・・・というように対応します。たとえば、i$newstr=ereg_replace(“([0・9]{3))・([0・9]{4))ヘ”¥¥1¥¥2″,$str);という文を実行したときのことを考えてみましょう。最初に、変数$strの文字列の中から、「3桁の数字」「ハイフン」「4桁の数字」と続くパターンが検索されます。置換する文字列の「¥¥1」は、パターンの中で最初に括弧で囲んだ「3桁の数字」の部位に対応します。そして、「¥¥2」は次に括弧で囲んだ「4桁の数字」に対応します。したがって「¥¥1¥¥2」は、見つかった文字列の中から「3桁の数字」と「4桁の数字」を取り出したものを表します。つまり、この文を実行すると、$strの文字列の中に「123-4567」のような番号があった場合、そこからハイフンが取り除かれた文字列が返され、それが$newstrに代入されることになるのです。

Leave a Reply

Your email address will not be published. Required fields are marked *