(PHP 4, PHP 5)
ereg_replace — 正規表現による置換を行う
$pattern
, string $replacement
, string $string
)
この関数は、string
をスキャンして
pattern
にマッチするものを探し、
マッチしたテキストを replacement
で置換します。
この関数は PHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。
pattern
POSIX 拡張正規表現。
replacement
pattern
の中に括弧でくくられた部分
文字列が含まれている場合、replacement
の中に \数字
のような部分文字列を埋め込むこともできます。この部分は、
「数字」番目の括弧でくくられた部分文字列にマッチする文字列に
置き換えられます。また、\0 は文字列全体を
指します。9 個までの部分文字列を使うことができます。括弧は
入れ子になっていても構いません。この場合は開き括弧 '(' が
最大 9 個まで使用可能です。
string
入力文字列。
置換後の文字列を返します。 マッチしなかった場合は、元の文字列をそのまま返します。
たとえば、以下のサンプルコードは "This was a test" と 3 回表示します。
例1 ereg_replace() の例
<?php
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>
注意しなければならないのは、パラメータ
replacement
として整数値を使用する場合、
期待する結果が得られない可能性があるということです。これは、
ereg_replace() がその数値を文字コードとして
解釈し使用するためです。例えば、次のようになります。
例2 ereg_replace() の例
<?php
/* これは期待した通りに動作しません。 */
$num = 4;
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string; /* 出力: 'This string has words.' */
/* これは動作します。 */
$num = '4';
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string; /* 出力: 'This string has 4 words.' */
?>
例3 URL をリンクで置換する
<?php
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
'<a href="\\0">\\0</a>', $text);
?>
注意:
PHP 5.3.0 以降、 regex 拡張モジュールは非推奨となりました。かわりに PCRE 拡張モジュール を使うことが推奨されています。 この関数をコールすると
E_DEPRECATED
が発生します。 PCRE への変換についてのヘルプは 相違点の一覧 を参照ください。
ereg_replace() は PHP 5.3.0 以降で非推奨になりました。この関数のかわりに preg_replace() を使うことを推奨します。