2011-10-27 8 views
0

時々スラッシュを含む文字列にstr_replace()を実行しています。 $ref['code']があるとき時々スラッシュを含む文字列を置換する

$text = str_replace('<Reference code="'.$ref['code'].'">','<a href="#" onclick="Ti.App.fireEvent(\'openPage\',{\'code\':\''.$ref['code'].'\'})">',$text); 

はしかし、M100/3(例えば)それは代わるものではありません:これは私が持っているstr_replaceです。だから私の質問は、私はどのように置き換えを行うことですか?

バックスラッシュのないすべての値が正常に動作します。

また、いくつかのケースでstr_replaceはそうではないだけでHTMLパラメータの中に、このようなものです、注意してください。

$text = str_replace('<Reference>'.(string)$ref.'</Reference>','<a href="#" onclick="Ti.App.fireEvent(\'openPage\',{\'code\':\''.(string)$ref.'\'})">'.(string)$ref.'</a>',$text); 

編集:

私は(にaddslashesを試してみました)が、していないようでした作業:

$text = str_replace('<Reference>'.addslashes((string)$ref).'</Reference>','<a href="#" onclick="Ti.App.fireEvent(\'openPage\',{\'code\':\''.(string)$ref.'\'})">'.(string)$ref.'</a>',$text); 
+0

問題は交換ではありませんでしたが、最初に交換が必要でした。今すぐ解決してください。 addslashesがなければ、それも機能します。 –

答えて

0

実際の問題は、最初に交換が必要かどうかの検出と思われました。

XMLを使用してデータが取り込まれるため、そのXMLの構築が間違っていたため、1つのレイヤーが深すぎるため、テキストを正しく検出できず、結果としてURLが置換されませんでした。

これが解決され、問題が修正されました。そこにはaddslahes()も必要ありません。

1

addslashes($ref['code'])$ref['code']を交換してください。あなたがコードの数のため、これらの置換を実行している場合

Source

+0

ちょうどそれを試して、動作しませんでした。私も質問が少し間違っていることに気づいた、それはスラッシュです –

+0

addslashes()も 'into'と 'into'に変わりませんでしたか? – rodneyrehm

+0

問題は交換ではありませんでしたが、最初に交換が必要でした。今すぐ解決してください。 addslashesがなければ、それも機能します。とにかくありがとうございます –

0

、あなたの代わりに正規表現を検討する必要があります。これにより

<?php 

$string = 'some <Reference>in_content</Reference> and <Reference code="attribute-with-content">bla</Reference> or even <Reference code="selfclosing" />'; 
$pattern = '#(<Reference>(?<a1>.*?)</Reference>)|(<Reference code="(?<a2>[^"]+)" />)|(<Reference code="(?<a3>[^"]+)">(.*?)</Reference>)#'; 

$_string = preg_replace_callback($pattern, 'replace_reference', $string); 
function replace_reference($matches) { 
    $key = $matches['a1'] ?: $matches['a2'] ?: $matches['a3']; 
    // maybe do a lookup if $key is valid or something 
    // if something is off, return $matches[0] to not replace anything 
    return '<a href="#" onclick="Ti.App.fireEvent(\'openPage\',{\'code\':\'' . $key . '\'})">'; 
} 

var_dump($string, $_string); 

を、あなたも知っている必要はありません置き換えるコード

関連する問題