2010-12-16 11 views
0

2つのタグの間にある文字列のテキストを簡単に置き換える方法を探しています。私はちょうどタグの間にあるものを交換したいPHPのタグ間の置換

The string contains <!-- Model # Start --> <!-- Model # End --> Tags. 

は、私がpreg_replace()これを行うだろうと考えているが、私はそれを動作させる方法がわからないです。

+0

あなたは一例を示したいくつかのコードを持っていますか? – kjy112

+0

http://php.net/manual/en/function.preg-replace.php –

答えて

3

preg_replaceを使用するには、元の文字列と正規表現を渡します。一致する結果が返されます。あなたが正規表現を理解する必要があるので、その方法についてはそれほど多くのことは言いません。ここで

はプログラムによるソリューション、おそらくない最も効率的なコードですが、あなたはそれが何をしているかの指標を与えます。

$tagOne = "["; 
$tagTwo = "]"; 
$replacement = "Greg"; 

$text = "Hello, my name is [NAME]"; 

$startTagPos = strrpos($text, $tagOne); 
$endTagPos = strrpos($text, $tagTwo); 
$tagLength = $endTagPos - $startTagPos + 1; 

$text = substr_replace($text, $replacement, $startTagPos, $tagLength); 

echo $text; 

出力:こんにちは、私の名前はグレッグです。

+1

これは '[NAME]'、すなわち、 '[NAME] [NAME]' 'が出力されます[NAMEの最後のインスタンスを置き換えます]グレッグ – webbiedave

0
$tagOne = "["; 
$tagTwo = "]"; 
$replacement = "Greg"; 

$text = "Hello, my name is [NAME] endie ho [NAME] \n [NAME]"; 

$textLength = strlen($text); 


for ($i; $i< $textLength; $i++) { 

    $startTagPos = strrpos($text, $tagOne); 
    $endTagPos = strrpos($text, $tagTwo); 
    $tagLength = $endTagPos - $startTagPos + 1; 
    if ($startTagPos<>0) $text = substr_replace($text, $replacement, $startTagPos, $tagLength); 
} 

echo $text; 

そうでない場合は、すべてのtextlengthのために、左のタグのposがあるかどうかを確認するif文に注意してください - この場合のタグの#、0のあなたの開始位置、「H」、gregsを取得します:)

上記出力

Hello, my name is Greg endie ho Greg Greg