phpチュートリアル混合preg_replace_callbackサンプルアプリケーションコード
//要件: すべての接続の後に request=xxx を追加します。この関数は preg_replace よりも柔軟性が高く、置換される内容は正規表現全体であることに注意してください。
$content = 'http://www.bkjia.com/aaa.php?id=111">リンク 2';
関数 add_source($matches)
{
If(strpos($matches[1], '?'))
{
return 'href="'.$matches[1].'&request=xxx"' // ここと下に通常の括弧の外側のものが追加されることに注意してください: href="
;
}
それ以外
{
return 'href="'.$matches[1].'?request=xxx"';
}
}
$content = preg_replace_callback('/href=['|"](.*?)['|"]/', 'add_source', $content);
//例 2
// このテキストは 2002 年のものです、
// 2003 年に利用できるようにしたいと思います
$text = "エイプリルフールの日は 2002 年 4 月 1 日です";
$text.= "最後のクリスマスは 2001 年 12 月 24 日でした";
//コールバック関数
関数 next_year($matches) {
// 通常: $matches[0] が完全一致です
// $matches[1] は最初の括弧内のサブパターンの一致です
// など
$matches[1].($matches[2]+1);
を返します
}
echo preg_replace_callback(
"|(d{2}/d{2}/)(d{4})|",
「来年」、
$text);
// 結果は次のようになります:
// エイプリルフールは 2003 年 4 月 1 日です
// 前回のクリスマスは 2002 年 12 月 24 日でした