- ベストアンサー
簡単な正規表現ではまってます。お助けを・・・
簡単な正規表現ではまってます。お助けを・・・ 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']); の行です。 エラーメッセージで検索したのですが、分からず。。。 どこが間違っているのでしょうか? 教えていただければ幸いです。 以上、よろしくお願い申し上げます。
- daisuke_dm
- お礼率81% (595/727)
- PHP
- 回答数4
- ありがとう数3
- みんなの回答 (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
関連するQ&A
- PHPでのQUERY_STRINGの使い方
PHPを勉強中です。 URLの?以降の文字列を取得し、それが正規表現で 数字と()、/*+-の数式に一致するかどうかを割り出したいです。 echo preg_match("/[^0-9\(\)\+\*\/-]/", "$_SERVER['QUERY_STRING']"); としたところ、 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) とエラーが出てしまいます。記述の仕方が悪いのでしょうか。 ご教示お願い致します。
- ベストアンサー
- PHP
- PHPですが、エラーがでます。下記の問題があるよう
なんですが、どこがいけないのでしょうか? $sql = "insert into menber(name,passward) values($_POST["name"]."','".$_POST["passward"].)";//SQL文の作成 ?> エラーはParse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in です。よろしくお願いいたします。
- ベストアンサー
- その他(インターネット・Webサービス)
- ブログが見れません。
暇つぶし感覚でブログを覗いていたのですが、 エラーのようなものがでてしまいました。 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /virtual/talentblog/public_html/tllink/tllink.php on line 106 なぜですかね? ご指導下さい。
- ベストアンサー
- Windows系OS
- 「Tok2」無料ホームページについて
「Tok2」のサイトで無料ホームページを作成してしばらく使っていたら,「Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/tok2/html/sr.tok2.com/chenge2/cms_tool/tmp/www○.tok2.com○○_2007-10.dat on line 53」,日本語だと「エラーを解析してください:エラー(予想外の『「T_STRINGまたはT_VARIABLEまたは中で/家でT_NUM_STRINGを予想する第53行の上で、/tok2/html/sr.tok2.com/chenge2/cms_tool/tmp/www○.tok2.com○○_2007-10.dat)を解析してください」と出て,ブログが表示されなくなってしまったのですが,どうすれば直りますか?
- 締切済み
- その他(ITシステム運用・管理)
- 【超初歩】$_POST["Var"]とかダブルクォーテーションの書き方が間違ってますか?
$sql = "UPDATE Enquete SET MyName = \"$_POST['MyName']\""; という書き方が, Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\temp\temp.php on line 10 みたいな扱いを受けてしまうのはなぜでしょうか. $Name = $_POST["MyName"]; $sql = "UPDATE Enquete SET MyName = \"$Name\""; とすればエラーにならないですが.
- ベストアンサー
- PHP
- クラス内での二次元配列への値の代入について
以下のソースで、配列変数$a[0][0]にbを代入して、メソッドprintAでそれをprintしようとしていますが、"Parse error: syntax error, unexpected '$a' (T_VARIABLE), expecting function (T_FUNCTION) in C:\xampp\htdocs\a.php on line 4"というエラーが出ます。 どうすれば、$a[0][0]にbを代入して、メソッドprintAでそれをprintできるか教えてください。 phpのバージョンは5.5.15です。 <?php class A{ private $a = array(); $a[0][0] = 'b'; function printA(){ print $this->a[0][0]; } } $x = new A(); echo $x->printA(); ?>
- ベストアンサー
- PHP
- スラッシュの正規表現(置換)
php初心者で更に正規表現(置換)が特に苦手なので、教えてください。 例えば下記のurlで http://www.goo.ne.jp/ を一番後ろの"/(スラッシュ)"だけとって、 http://www.goo.ne.jp にするにはどうしたら宜しいでしょうか? ちなみに、 http://www.goo.ne.jp/test のような場合は、何もしない事も出来るのでしょうか? いまいち方法が分からず、こんな感じで行ったのですが、 $url = preg_replace("\///", "\\1",$url); エラーが出てしまいます。
- ベストアンサー
- PHP
- 正規表現を使い、URLで条件分岐したいのですが…
正規表現を使い、URLで条件分岐したいのですが、 うまくいかないので、教えてください。 <やりたいこと> http://ドメイン/page1.html http://ドメイン/page2.html : のページの時のみ、 という条件分岐をしたい。 <現状> if($_SERVER['REQUEST_URI']=="/page1.html"){ とするとうまくいくのですが、 これを任意のpage○で対応したい $_SERVER['REQUEST_URI']=="^/page*.html$"){ としたけど、ダメでした。 どう書けば、よいでしょうか?
- ベストアンサー
- PHP
お礼
ありがとうございます。 変数は、正規表現の後方参照だから、「$1」でいいはず・・とおもっていたのですが。。。 なにか根本的にかんちがいしてるのでしょうか<=自分・・・