前回まで、正規表現を使った検索を書いてきましたが、
他にも正規表現を使う関数があります。
関数 | 戻り値 | 内容 |
---|---|---|
preg_match(string $ptr,string $str) | interger | 正規表現で検索する。 |
preg_replace(mixed $ptr,mixed $rp,mixed $str) | 値 | 正規表現で置換する。 |
preg_split(string $ptr,string $str) | array | 正規表現で分割する。 |
勢引表現を使うと検索するだけではなく、マッチする場合に
置換を行うことができます。preg_replace()関数です。
ファイル名のリストがある場合、特定の拡張子を別の拡張子に
置換する処理を今回書いていきます。
.xml,.html,.php拡張子を.txtに変換してみます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>行と・行末を表す正規表現</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php $str = array("test.html" ,"test.xml" ,"test.dll","test.php"); ?> <table border="3"> <tr> <th>変更前</th> <th>変更後</th> </tr> <?php foreach($str as $valueStr){ $rpStr = preg_replace("/\.(xml|php|html)$/",".txt", $valueStr); echo "<tr>"; echo "<td>{$valueStr}</td>"; echo "<td>{$rpStr}</td>"; echo "</tr>"; } ?> </table> </body> </html> |
拡張子が、.xml,.php.,.htmlのいずれかである場合に、
.txtに変更する処理をサンプルコードで行っています。
パターンにマッチするものだけを置換しています。
正規表現で日本語を使用する場合は、以下の
マルチバイト文字列関数を使う必要があります。
また、下記の巻数はパターンを「//」で囲みません。
関数 | 戻り値 | 内容 |
---|---|---|
mb_ereg(string $ptr ,string $str ,array $match) | integer | 正規表現で検索する。 |
mb_ereg_replace(string $ptr ,string $rp ,string $str ,array $match) | string | |
mb_split(string $ptr ,string $str) | array | 正規表現で分割する |