• 締切済み

後方参照の$1を、配列のキーとして使うことはできないのか。

質問があるのですがよろしくお願いします。 環境は Windows XP Home php5.20 apache2.059 です。 $line = preg_replace("/__(.+?)__/", $row["$1"], $line); と書くと、$row配列に値が入っているのにも関わらず、$row["$1"]の値は空であるものとして扱われてしまいます。つまり、/__(.+?)__/ が$row["$1"]に変換されず、消えるだけで終わってしまいます。 $line = preg_replace("/__(.+?)__/", "$1", $line); とすると、正常に動作するので、$1の中にはちゃんと値が入っていると思うのですが・・・ 一番上のスクリプト、 $line = preg_replace("/__(.+?)__/", $row["$1"], $line); で、/__(.+?)__/ を $row["$1"] に正常に変換させるにはどのような書き方をすればよいのでしょうか?? どなたか分かる方いらっしゃいましたらご教授よろしくお願いいたします。

みんなの回答

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

試してみたけど確かにできませんね。 $key = preg_replace("/__(.+?)__/", "$1", $line); $line = $row[$key]; とワンクッション置いてみてはいかがでしょうか。

miraikako
質問者

お礼

お礼が遅れて申し訳ありません。 やはり出来ないようなので、かなり回りくどいやり方でコーディングせざるを得ませんでした。 回答ありがとうございました。

関連するQ&A