(PHP 3, PHP 4 )
ereg_replace -- 正規表現による置換
説明
string
ereg_replace ( string pattern, string replacement, string string)
この関数は、stringをスキャンして
patternにマッチするものを探し、
マッチしたテキストをreplacement
で置換します。
置換後の文字列が返されます。(マッチしなかった場合は、
元の文字列が返されます。)
patternの中に括弧でくくられた部分
文字列が含まれている場合、replacement
の中に\\数字
のような部分文字列を埋め込むこともできます。この部分は、
「数字」番目の括弧でくくられた部分文字列にマッチする文字列
に置き換えられます。また、\\0は文字列全体
を指します。9個までの部分文字列を使うことができます。括弧は
入れ子になっていても構いません。この場合は開き括弧 '(' が
最大9個まで使用可能です。
stringにおいてマッチするものがなかった
場合、stringは変更されずに返されます。
たとえば、以下のサンプルコードは"This was a test" と3回表示します。
例 1ereg_replace()の例 $string = "This is a test";
echo ereg_replace (" is", " was", $string);
echo ereg_replace ("( )is", "\\1was", $string);
echo ereg_replace ("(( )is)", "\\2was", $string); |
|
注意しなければならないのは、パラメータ
replacement として整数値を使用する場合、
期待する結果が得られない可能性があります。これは、
ereg_replace() が文字の値を数値として解釈し、
使用するためです。例えば、次のようになります。
例 2ereg_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.' */
?> |
|
例 3URLをリンクで置換する $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $text); |
|
ereg(), eregi(),
eregi_replace(), str_replace(),
preg_match()も参照下さい。