• ベストアンサー

簡単な正規表現ではまってます。お助けを・・・

簡単な正規表現ではまってます。お助けを・・・ PHP5.1.6です。 アクセスされたURLの最後にハンカクスラッシュがあった場合、これを削り取って、 新しいURLへ、301のステータスコードでリダイレクトさせたいと思ってます。 で、以下のようなスクリプトを書いたのですが。。。 $this->sPattern = "/(.*)\/$/"; $_SERVER['REQUEST_URI'] = preg_replace($this->sPattern, $1, $_SERVER['REQUEST_URI']); $this->bReturn301StatusCode = true; Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /var/www/_include/class/uri.class on line 54 といわれてしまいます。 なお、54行目は、 $_SERVER['REQUEST_URI'] = preg_replace($this->sPattern, $1, $_SERVER['REQUEST_URI']); の行です。 エラーメッセージで検索したのですが、分からず。。。 どこが間違っているのでしょうか? 教えていただければ幸いです。 以上、よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

$1 をシングルクォートでくくって、'$1' としてみてはいかがでしょう。

その他の回答 (3)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

文末に来ている文字を排除したいだけであれば 正規表現よりもtrim()使った方がすっきりするかと。 $url = 'http://example.com/test/hoge/'; $url = trim($url, '/'); 正規表現にこだわる必要がある場合はスルーしてくだされ

参考URL:
http://jp.php.net/trim
回答No.3

#2さんの方法で良いと思います。 もういちどマニュアルのreplacementの部分を確認してみて下さい。 http://jp2.php.net/preg_replace \\n 形式または $n 形式で指定出来るようです。$が変数と間違われないようにシングルクォートするのが良いと思います。

回答No.1

「$1」が変数として悪いのでは? http://jp.php.net/manual/ja/language.variables.php

daisuke_dm
質問者

お礼

ありがとうございます。 変数は、正規表現の後方参照だから、「$1」でいいはず・・とおもっていたのですが。。。 なにか根本的にかんちがいしてるのでしょうか<=自分・・・

関連するQ&A

専門家に質問してみよう