2017-04-10 5 views
0

複数のソースと列に複数の値を置き換える:私はスクリプトから受け取る値とキー[TEL]及び[ID_MTG]を交換する必要がIのような画素を有する

<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=[ID_MTG]&data=[TEL]' height='1' width='1' border='0'/> 

。例えば、私が持っている場合:

$tel = "0613321223"; 
$id_mtg = "4875"; 
$email = "[email protected]"; 

は私が出力する必要があります。

<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=4875&data=0613321223' height='1' width='1' border='0'/> 

私が持っている場合:

<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=4875&[email protected]' height='1' width='1' border='0'/> 

私が持っている:

<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=[ID_MTG]&data=[EMAIL]' height='1' width='1' border='0'/> 

は私がouputをする必要があります:

$tel = "0613357221"; 
$email = "[email protected]"; 
$id_mtg = "560"; 

$string = "<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=[TEL]&data=[ID_MTG]' height='1' width='1' border='0'/>"; 
$patterns = array(); 
$patterns[0] = ' /\[TEL\]/ '; 
$patterns[1] = ' /\[EMAIL\]/ '; 
$patterns[2] = ' /\[ID_MTG\]/ '; 
$replacements = array(); 
$replacements[2] = $id_mtg; 
$replacements[1] = $email; 
$replacements[0] = $tel; 
echo htmlentities(preg_replace($patterns, $replacements, $string)); 

しかし、私の文字列は次のとおりです。

<img src='http://www.montag.com/directory_folder/tracking_noip.php?tracking=520&data=0613357221' height='1' width='1' border='0'/> 

順序が逆になります。

+0

固定ストリングを検索する場合、正規表現の必要はありません。あなたは[strtr](http://php.net/strtr)を試しましたか? –

答えて

1

$replacementsを逆順に定義したため、注文が間違っています。降順でインデックスを指定した場合でも、は、アレイを作成した順序が保存されます。これをprint_r($replacements);で確認してください。正しい順序で配列を取得する必要がある場合は、ksort()キーでソートすることができます。

しかし、このアプリケーションでは、strtr()またはstr_replace()が理にかなっています。

$search = array('[TEL]', '[EMAIL]', '[ID_MTG]'); 
$replace = array($tel, $email, $id_mtg); 

$result = str_replace($search, $replace, $string); 
+0

私は電車の後でこの解決策を見ていますが、それは私に完全にトリックを行うようです!私はあまりにも遠すぎると思う^^ – Buck

4
$str = 'hi all, I said hello'; 

$replace_pairs = array(
    'all' => 'everybody', 
    'hello' => 'hey', 
); 

echo strtr($str, $replace_pairs); 

これは役に立ちます。

関連する問題