- ベストアンサー
簡単な正規表現ではまってます。お助けを・・・
簡単な正規表現ではまってます。お助けを・・・ 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']); の行です。 エラーメッセージで検索したのですが、分からず。。。 どこが間違っているのでしょうか? 教えていただければ幸いです。 以上、よろしくお願い申し上げます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
$1 をシングルクォートでくくって、'$1' としてみてはいかがでしょう。
その他の回答 (3)
- wp_
- ベストアンサー率54% (132/242)
文末に来ている文字を排除したいだけであれば 正規表現よりもtrim()使った方がすっきりするかと。 $url = 'http://example.com/test/hoge/'; $url = trim($url, '/'); 正規表現にこだわる必要がある場合はスルーしてくだされ
- 参考URL:
- http://jp.php.net/trim
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
#2さんの方法で良いと思います。 もういちどマニュアルのreplacementの部分を確認してみて下さい。 http://jp2.php.net/preg_replace \\n 形式または $n 形式で指定出来るようです。$が変数と間違われないようにシングルクォートするのが良いと思います。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
「$1」が変数として悪いのでは? http://jp.php.net/manual/ja/language.variables.php
お礼
ありがとうございます。 変数は、正規表現の後方参照だから、「$1」でいいはず・・とおもっていたのですが。。。 なにか根本的にかんちがいしてるのでしょうか<=自分・・・