• ベストアンサー

evalの中でNULLを使用して比較したい

PHP5.2.4を使用しています。 次のようなevalを使って式を評価させたいのですが、 NULLを比較させると Parse error: syntax error, unexpected T_IS_NOT_EQUAL in test.php(11) : eval()'d code on line 2 というようなエラーがでてしまいます。 どうすればevalの中でこの条件式を成立させることができるのでしょうか? $left = NULL; $right = 1; $str = ' if('.$left.' != '.$right.') { print "not<br>\n"; } '; eval($str);

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

$left = 'NULL' では? NULLの代入が,クォートを忘れてしまっているので leftが文字列の’NULL’ではなく,空文字列になってしまっています. strの中身を表示したら if( != 1) { print "not<br>\n"; } とかになっているんじゃないですかね?

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、空でしたか・・・ クォートを付加したらできました。ありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

if("'.$left.'" != "'.$right.'") でいけそうですが、evalをつかってやるような処理じゃないですね

takagoo100
質問者

お礼

ご返答ありがとうございます。 >evalをつかってやるような処理じゃないですね たしかに

関連するQ&A

  • 【初歩】 極単純な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
  • 何故unexpected ';'が出るのでしょうか

    お尋ねします。以下のスクリプトを書いてブラウザで表示しようとすると Parse error: syntax error, unexpected ';' in C:\xxx om\test.php on line 11   とエラーが出ます。 11行目は ?> と書いてあります。 <?php ~ ?> の対応関係も合っていると思います。 何故、unexpected ';' エラーが出るのでしょうか? どこが間違っているのでしょうか? 不具合修正はどのようにすれば良いか、ご教示いただければ有難いです。よろしくお願いいたします。 <html> <body> <?php if ( $_REQUEST[ "SUBMIT" ] != "" ){ $month=$_POST['month']; $day=$_POST['day']; $memo=$_POST['memo']; if( ($month=='') | ($day=='')){ echo                  ?>      ←ここでsyntax エラー <HTML><BODY> <FONT COLOR="RED"><B>空欄です</B><BR><BR> </FONT><BR></BODY></HTML> <?php exit(); } } ?> </body></html>

    • ベストアンサー
    • PHP
  • PHPでエラーがでてしまって困っています。

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/MAMP/htdocs/5-2-1.php on line 30 このエラーを解消できません。 下記は実践マスターPHP+MYSQLという書籍のなかのサンプルなんですが、どこが間違っているかどなたか教えていただけないでしょうか? エラーを検索するとダブルクォーテーションの使い方が原因と書いてあるんですが、最近PHPを勉強したばかりでどうやっても解決できません。 function check_3(&$str){ $str =str_replace($GLOBALS["from"],$GLOBALS["to"],$str);  ←この行でエラー global $msg; $msg = $GLOBALS["from"].'から'.$GLOBALS["to"].'へ置換しました!<br>'; return strlen($str); } 宜しくお願いします。

    • 締切済み
    • PHP
  • phpと<?xml version="1.0" encoding="utf-8"?>

    phpファイルの頭に<?xml version="1.0" encoding="utf-8"?>を入れると Parse error: syntax error, unexpected T_STRING in ・・・ というエラーが出ます。 なぜでしょう?

    • ベストアンサー
    • 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
  • modifyでnot nullを追加出来ない

    My SQL バージョン5.5です。 学校で習っている時に 追加で、 not nullを設定しようと思い、 modify文を色々試して使いましたが Syntaxのエラーが出て、 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' c_pass not null' at line 1 (※c_pass はカラム名です) change 型名(桁数)を使うと変更できました。 なぜmodifyなどでは追加変更出来なかったのか、原因がわかる方はいらっしゃいますか? バージョンの問題ですか?

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

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

  • php 何故、エラー???

    いつもお世話になりありがとうございます。 標記の件。 $subject = "お仕事に関するお問い合わせ"; がエラーになってしまいます。 PHP Syntax Check: Parse error: syntax error, unexpected variable "$subject" in your code on line 2 全体のコードは下記です。 <? php $subject = "お仕事に関するお問い合わせ"; $body = "お見積の件で、連絡をしました。"; ?> <!doctype html > <html > <head > <meta charset =" utf-8"> <title>お問い合わせ</title> </head> <body> <h1><? php echo $subject ?></h1> <p><? php echo $body ?></p> </body > </html > どうして2行目がエラーになるのでしょうか? どうか教えてください。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • phpエラーについて

    おはようございます。 PHPにて掲示板を作成しています。 (全文は文字数制限にて掲載することができなかったため、主要な部分を掲載しております) 一通り作成した後、 ブラウザから参照したところ、 Parse error: parse error, unexpected ';', expecting '{' in /***/***.php on line 44 が出力されました。 line 44行目は「function convstr ( $str );」の行を指します。 この場合、問題となっているのは、 44行目から 57行目の間と考えてよろしいのでしょうか? もし、違っていたとするならば、どこまで追っていけばよろしいのでしょうか? また、errorに対するデバッグ手法がありましたら、 具体的な手法を教えて頂けないでしょうか? 例:printfを*行目にprint()の構文で設置する。 どうぞよろしくお願いします。 42:<?php 43: //タグ無効化等の処理をする関数 44: function convstr ( $str ); 45: { 46: //タグを無効化する 47: $str = htmlspecialchars ( $str ); 48: 49: //「'」「"」を全角に置換する 50: $str = stripslashes ( $str ); 51: $str = ereg_replace ( "'", "’", $str ); 52: $str = ereg_replace ( """, "”", $str ); 53: 54: //文字列内の改行を<br>に変換する 55: $str = ereg_replace ("\r\n|\r|\n", "<br>", $str); 56: return $str; 57: } 58: 59: //DBに接続する 60: $conn = mysql_connect ( "localhost", "root", "mysql" ); 61: if ( $conn == false ) 62: { 63: print ( "DB接続エラーです<br>\n" );

    • ベストアンサー
    • PHP
  • PHPのdefineで「@」を使う方法

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

    • ベストアンサー
    • PHP