2016-04-01 7 views
3

間のテキストを置き換えます。PHP正規表現は、私は次の文字列を持っているブラケットとブラケット

括弧内のテキストを取得する方法はわかりましたが、括弧自体を置き換えたいと思います。

$string = "Welcome [firstname] [lastname]"; 

$patterns = array(); 
$patterns[0] = '\[firstname\]'; 
$patterns[1] = '\[lastname\]'; 

$replacements = array(); 
$replacements[0] = 'Marcello'; 
$replacements[1] = 'Silvestri'; 

echo preg_replace($patterns, $array, $string]); 

私も\[(.*?)\]は関係なく、角括弧の内容のすべてを置き換えるためにしようと試みたが、私はちょうどMarcelloをしたい一方で、私は、[Marcello]のようなものを取得します。

角括弧を含むコンテンツを置き換えるにはどうすればよいですか?

+2

パターンを事前および区切り文字を付加する必要も参照してください、あなたは以下のコードを見ることができる小さなテストをしました。 '/ '[firstname \] /'のように'/'を使用することができます。 – treegarden

+0

将来、エラー報告を使用してください。 'Parse error:syntax error、unexpected error ']' on line 12'が修正された後、'デリミタは英数字でもバックスラッシュであってはいけません。 http://php.net/manual/en/regexp.reference.delimiters.php – chris85

答えて

4

実際にはに正規表現が必要なので、ここでは単純なstr_replaceの例です。

$string = "Welcome [firstname] [lastname]"; 

$find = [ 
    '[firstname]','[lastname]' 
]; 
$replace = [ 
    'Marcellus','Wallace' 
]; 

$modified = str_replace($find,$replace,$string); 

print $modified; 

ウィル出力

Welcome Marcellus Wallace 
+0

私はこの瞬間に本当に馬鹿だと感じます。簡単な質問:正規表現を使ってこの方法を提案するのはなぜですか(これは正規表現でも可能です)? – wiredmark

+0

これは複雑な文字列の置換ではないので、 'str_replace'に行くと思います。実際には正規表現のマッチの恩恵を受けます。 –

+1

また、 'preg_replace'は**かなりstr_replaceより遅いです_これはサンクされましたit_ :)ここでいくつかのランダムなベンチマークhttp://micro-optimization.com/str_replace-vs-preg_replace-without- regular-expression.html –

3

以下は、あなたのパターンです。 @solvesあなたの問題を使用します。そしてあなたがstr_replaceでこれを達成することができますサンドボックスhere

$string = "Welcome [firstname] [lastname]"; 

$patterns = array(); 
$patterns[0] = '@\[firstname\]@';//this is what you need 
$patterns[1] = '@\[lastname\]@'; 

$replacements = array(); 
$replacements[0] = 'Marcello'; 
$replacements[1] = 'Silvestri'; 

echo preg_replace($patterns, $replacements, $string); 
1

でそれを確認してください()。

$string = "Welcome [firstname] [lastname]"; 
$patterns = array("Marcello", "Silvestri"); 
$replace = array("[firstname]", "[lastname]"); 

$result = str_replace($replace, $patterns , $string); 

echo $result; 

はPHP str_replace()

関連する問題