2012-04-01 31 views
1

mysqlデータベースにいくつかのフラグを設定しているので、次のコードを使用してリンクとタイトルタグを動的に生成できます。しかし、それは変数としてドル記号を持つものを解析するようです。タイトルがある場合PHPはpreg_replaceの変数としてmysqlの結果をパーズします

foreach($result as $value){ 
    $id = $value['id']; 
    $title = $value['title']; 
    $synopsis = $value['synopsis']; 

    $synopsis = preg_replace('/<!--TITLE-->/', $title, $synopsis); 
} 

だから、「$ 500,000個の何とか何とかに寄付し、」それが出力「0000は、何とか何とかに寄付」します。これを解析しないようにするにはどうすればいいですか?この特定のケースでは、データベースにasciiの値&#36;を格納できません。

答えて

2

preg_replaceを試してみてくださいhttp://us.php.net/manual/en/function.preg-replace.php

を参照してください。 (ただし、最初の2桁のみが使用され、番号の範囲は0〜99です)。また、キャプチャグループが50番目でないため、$50は何も解釈しません。

パターンではなく既知の文字列を検索して置き換える場合は、preg_replaceの代わりにstr_replaceを使用してみてください。それはそのような悪夢を持っていません。

1

$ sign in preg_replaceは、正規表現のカッコを決定します。 $ 50は$パターンの50番目の括弧を意味します。これはpreg_replaceの\ 50と似ています。 2番目の文字列による検索し、$を見れば、それとその番号のキャプチャグループへの参照として続く数字を扱う

foreach($result as $value){ 
    $id = $value['id']; 
    $title = preg_replace('@\\\\(\d+)@' ,'\\\\\\\\$1', preg_replace("/\\$/","&#36;",$value['title']));  
    $synopsis = $value['synopsis']; 
    $synopsis = preg_replace('/<!--TITLE-->/', $title, $synopsis); 
} 
+0

なぜそれが機能するのですか?答えはちょうど「ここにコピー/ペーストする」以上のものが必要です。そうしないと誰も助けません。 – cHao

+0

それは実際に動作します。しかし、PHPに関数や何かがあって、変数としてこれらのものを解析しないようにしたいと思っていました。ドル記号で置き換えを見つけるのは少しハックとスラッシュのようです。 –

+0

確かに@cHao。私は説得力のある説明で私の答えを編集する。 – Huseyin

関連する問題