2012-04-28 14 views
0

どうすればよいですか?preg_replace()を使用して一致する値を戻す方法

<?php 
$string = '<inc="file.php">'; 
return preg_replace_callback('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#', function($matches) { 
    return include $matches[1]; 
}, $string); 
?> 
+0

まず 'sscanf'を試してください。 – hakre

+0

@hakreそれはどの程度正確に役立つでしょうか?私はそれが置き換えているとは思わない...とにかく私はなぜ誰かがこの質問を嫌うだろうか? –

答えて

1

私はそれが2番目のパラメータは文字列でなければなりません

return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#','include("'.$1.'")',$string); 

されるべきだと思います。

+0

はいうれしい仕事に感謝します – user1179177

3

が含まリターンです

<?php 
$string = '<inc="file.php">'; 
return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#',include("$1"),$string); 
?> 

しようとしていますが、preg_replaceよりpreg_matchを使用してみてください。

あなたがそれを使用する場合に示すようにそれは配列にマッチを収集します

preg_match('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#', $string, $matches);

そして試合が$matches配列に格納されています。その後、foreachを使用してループすることができます。

+0

はいこれはすべての人にとって良いお礼です – user1179177

1

私がまさにわからない:出力は、私は返す必要が$ 1

はあなたがPHP 5.3以上をお持ちの場合はfile.php

+0

なぜ彼はそうしますか:** TLDR; * | regexp 2xをやりたいとは思わない| *** ...完全な例:データがあるとしたら、データ項目の1つのプロパティに、あなたの特定のコンテキストには属していないが、それを捨てなさい - それはちょうどあなたの文脈のどこか他の所に属しています - それで非効率的にあなたは1.それを検索し、2.それを検索して置き換えます - あなたは2倍の検索を2回行うでしょう。これは:-) Sidenote:あなたは、OPが彼/彼女が求めているものとは異なる何かを望んでいると思うなら - まずはコメントをしてください;) –

関連する問題