エラーがついてプログラム初心者です

このQ&Aのポイント
  • 教えていただいたコードをサーバーで使ったところエラーが発生しました。xamppでは動作していたため、phpのバージョンによるエラーかと思われます。現在のレンタルサーバーのphpバージョンは5.2.5ですが、5.5.2へのアップグレード予定があるようです。具体的な日程は不明です。エラーは「Parse error: syntax error, unexpected T_FUNCTION in hoge.php on line 59」というもので、preg_replace_callback関数の中で予期しないT_FUNCTIONエラーが発生しています。解決方法を教えていただけると助かります。
  • プログラム初心者ですが、サーバーで使ったコードがエラーになりました。xamppでは正常に動いているため、phpのバージョンによるものだと思います。現在のレンタルサーバーではphp5.2.5を使用していますが、5.5.2にアップグレードする予定があるようです。具体的な予定は不明です。エラーメッセージは「Parse error: syntax error, unexpected T_FUNCTION in hoge.php on line 59」です。preg_replace_callback関数の中に予期しないT_FUNCTIONエラーが発生しています。解決方法を教えていただけると助かります。
  • プログラム初心者です。サーバーでコードを使ってみたところエラーが発生しました。xamppでは問題なく動作していたため、phpのバージョンによるエラーだと考えられます。現在のレンタルサーバーのphpバージョンは5.2.5で、アップグレード予定はありますが具体的な日程は不明です。エラーメッセージは「Parse error: syntax error, unexpected T_FUNCTION in hoge.php on line 59」となっています。preg_replace_callback関数の中でT_FUNCTIONエラーが発生しています。解決策を教えていただけると助かります。
回答を見る
  • ベストアンサー

エラーがついて

プログラム初心者です 以前、教えていただいたコードをサーバーで使ってみたらエラーがでました xamppでは動いていたのでたぶんphpのバージョンによるエラーかとおもいます レンタルサーバーはphp5.2.5です 5.5.2に上がるようなことアナウンスされていますがいつになるかわかません 分かる方おねがします(_ _ http://okwave.jp/qa/q8503227.html でたエラーはこれです Parse error: syntax error, unexpected T_FUNCTION in hoge.php on line 59 ここらへんぽいのですが、自分には問題ないようにみえます return preg_replace_callback( $regex, function ($m) use (&$i) { よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • PHP
  • 回答数2
  • ありがとう数2

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

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

ああ、これ確かuse句でカウンタを参照して、置換回数に上限設けていましたね…これだと無名関数ではない通常の関数では実現しにくく、クラスを使ったほうが実装が綺麗になると思います。 以前作成した関数には冗長な部分が多く、エスケープも誤って2重にしてしまっている部分もあったので、5.2でも動く形で書き直してみました。「2個以内の動画に該当するURL」以外のURLについても、aタグを使ってリンクするようにしまいした。 ※ 確認のため現在は最大値99に設定していますが、2に変更して使ってください http://pastebin.com/xtTgsLKA http://ideone.com/ppEqLZ

flash0
質問者

お礼

うまくうごきました。ありがとうございます コードのレベルが高くて使うのでやっとでした 助かりました。感謝いたします

その他の回答 (1)

noname#244856
noname#244856
回答No.1

PHP5.3以降でしか無名関数は使えません。 http://php.net/manual/ja/functions.anonymous.php 対処法としては…非常に不恰好になりますが、普通に関数を定義してコールバックとして「関数名」を文字列で渡すしかありませんね。

flash0
質問者

お礼

回答ありがとうございます 回答2のコードは自分がまだまだなんだと思いしらされたコードでしたorz 当分、初心者マークはとれなさそうです

関連するQ&A

  • constでパースエラー

    <?php class hoge { const MOGE = 'moge'; function poge() { echo 'poge'; } } ?> なコードを書くと、 Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ...\test.php on line 5 とのエラーがでます。 constの部分をコメントアウトすればエラーはでません。 環境は、WindowsのXAMPP環境で、PHPのバージョンを4に変更してテストしているところなのですが... PHP Version 4.4.8 Apache/2.2.8 PHP5の環境では、正常に動作しました。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpファイルを開けない(ブラウザにエラー表示)

    こんにちは! PHPを勉強中なのですが、あるphpファイルをブラウザで開こうとすると 以下のように表示が出てしまい、ファイルが開けません。 ------------エラー文------------------------------------------- Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\hello.php on line 128 --------------------------------------------------------------- これは何が原因のエラーなのでしょうか? 有識者の方いらっしゃいましたらご指導宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Parse error: syntax error

    Parse error: syntax error, unexpected $end in ...on line 19について wordpressの方で、functions.phpに書いたものが、前に一度機能していたはずのソースが他の記述を加えたりしていたらエラーになってしまいました。今は下記だけです。どこが間違っているのでしょうか?前と同じソースをコピペしているので、原因がわかりません。 <?php function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_bloginfo('template_directory') . '/images/', $arg); return $content; } add_filter('the_content', 'replaceImagePath');

    • 締切済み
    • PHP
  • PHPのdefineで「@」を使う方法

    PHPにてdefineで定数を「@」を含む文字列で宣言したいのですが、 define("HOGE", "hoge@hoge"); と言った設定をすると Parse error: syntax error, unexpected '@' のエラーが出てしまいます。 どのように記述すれば「@」を含む文字列を宣言する事が出来るのでしょうか?

    • ベストアンサー
    • PHP
  • smartyについて教えてください。

    smartyについて教えてください。 エラーメッセージ Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\smarty\hello\index.php on line 8 の意味を教えていただけませんでしょうか? よろしくお願いいたします。

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

    簡単な正規表現ではまってます。お助けを・・・ 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']); の行です。 エラーメッセージで検索したのですが、分からず。。。 どこが間違っているのでしょうか? 教えていただければ幸いです。 以上、よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPのエラー「Unexpected character ...」「syntax error, unexpected ...」について

    PHP Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/***/***.php on line 25 PHP Parse error: syntax error, unexpected '<' in /home/***/***.php on line 26 という2行のエラーが表示されました。 まったく明快な答えは探せませんでした。 もしも少しでも手がかりになるような情報がありましたら教えて下さい。 お願いします。

    • 締切済み
    • PHP
  • phpmyadminのエラー

    お世話になります。 掲題の件ですが、先日からphpmyadminを起動すると 下記のエラーが表示されてしまいます。 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /export/XXX.com/phpmyadmin/libraries/config/config_functions.lib.php on line 48 該当48行目は下記となってますので $message = preg_replace('#\[a@("?)([^\]]+)\1\]([^\[]+)\[/a\]#e', "PMA_lang_link_replace('$2', '$3')", $message); ↓としたのですが $message = preg_replace_callback('#\[a@("?)([^\]]+)\1\]([^\[]+)\[/a\]#', "PMA_lang_link_replace('$2', '$3')", $message); エラーとなってしまいます。 どこに誤りがあるでしょうか。。 また、phpadminのアップデートを検討しているのですが いまのデータベースを保持したまま、アップデートすることは可能でしょうか。 宜しくお願い致します

    • 締切済み
    • PHP
  • 【初歩】 極単純なFOR文がなぜ「parse error」になるのかわかりません…

    下記のサンプルが,どう見直しても Parse error: parse error, unexpected T_VARIABLE in C:\hoge.php on line 2(2行目とは$str1 = "1";のこと). となってしまうのですが,なぜでしょうか. 下記は質問向けにアレンジしたものですが 本番環境の方では少しメッセージが異なり: Parse error: parse error, unexpected T_FOR in C:\hoge.php on line xxx. と,まあいずれでもエラーになってしまうのですけど・・・ <? php $str1 = "1"; $str2 = "2"; $str3 = "3"; for ($Num = 1; $Num <= 3; $Num++) { echo ${"str" . $Num}; } ?>

    • ベストアンサー
    • PHP
  • PHPのエラーについて質問です

    PHPのエラーについて質問です XAMPPをインストールして、 http://localhost/top.php のように、フォルダの中身のファイル名を指定すると、 以前までは、ちゃんと表示されていたものが、 Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_END_HEREDOC or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in C:\xampp\htdocs\top.php on line 68 のようにエラーが表示されるようになりました。 解決策を教えてもらえないでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう