TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

Think IT Software Developer's Think IT Find-IT 失敗しないソフト選び Find-IT TEDIA テクノロジーポータル TEDIA インストールマニアックス2008 インストールマニアックス2008

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

preg_replace_callback()関数を使いこなす!
(2009/02/05公開)

クラスにpreg_replace_callback()を使う

 次は、クラスを使いたがるオブジェクト指向諸氏のための解説です。さて、前述の例の場合、OOP(オブジェクト指向プログラミング)の手法でコードを作成すると、以下のようになります。


<?php
$str = "
list 1
<ol>
<li>item A</li>
<li>item B</li>
<li>item C</li>
</ol>

list 2
<ol>
<li>item D</li>
<li>item E</li>
<li>item F</li>
<li>item G</li>
</ol>

list 3
<ol>
<li>item H</li>
<li>item I</li>
<li>item J</li>
<li>item K</li>
<li>item L</li>
</ol>

";

$app = new ProcessList();
echo preg_replace_callback('%<ol>(.*?)</ol>%si', array(&$app, 'process_list'), $str);

class ProcessList {

function process_list($matches) {
global $sno;
$sno = 0;
return preg_replace_callback("/<li>(.*?)</li>/i", array(&$this, 'process_item'), trim($matches[1]));
}

function process_item($matches) {
global $sno;
++$sno;
return "$sno. $matches[1]";
}
}

?>



 array(&$app, 'process_list')とarray(&$this, 'process_item')を使って、コールバック関数を指定しています。最初のパラメータはオブジェクトを指すポインター、2番目のポインターはそのオブジェクトにおけるコールバック変数のメソッド名です。

最後に

 今回はこれで終了です。preg_replace_callback()関数がpreg_replace()関数とまったく同じように動作することがお分かりいただけたでしょうか?唯一の違いは、置換文字列に代わり、コールバック関数を指定することです。コールバック関数を使えば、多様に、かつ非常に便利に、思い通りの文字列を生成することができます。

 解説した例を参考に、preg_replace_callback()関数をどんどん活用してください!

(著者:K.K.Sou)

原文へのリンク


前のページ     1    2    3    4    5   

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.