さくらのレンタルサーバー上で、別のページからのPOSTを受け取ってPHPで配列を検索して結果を出すというものを作っていますが、preg_grepの結果が、空になってしまい結果が得られません。
最小限のコードにして試していますが、結果は変わらずでした。
該当のソースコード
html
1<form class="" action="test.php" method="post"> 2<input type=text name=inputtext value=""><br> 3<input type=submit value=input><br>
php
1$input = filter_input(INPUT_POST,'inputtext'); 2echo $input; 3$array = ['りんご','バナナ','いちご']; 4 5var_dump($array); 6$needle = "/".$input."/u"; 7echo $needle; 8 9$result = preg_grep($needle,$array); 10var_dump($result); 11 12if(empty($result)!==false){ 13 echo "ないよ!"; 14 exit; 15} 16print_r($result); 17
試したこと
HTMLでは「りんご」と入力しても変数には入っているようでしたが、ereg_grepでは空になるようでした。
値を直接入力(preg_grep('/りんご/u',$array))すると正常に結果が出ますが、変数を使用すると出ないようです。
また、正規表現のミスかと思いましたが、正規表現チェッカーで調べると問題ないようでした。
コード中の結果出力は以下のようになっていました。
echo $input; りんご var_dump($array); array(3) { [0]=> string(9) "りんご" [1]=> string(9) "バナナ" [2]=> string(9) "いちご" } echo $needle; /りんご/u var_dump($result); array(0) { }
補足情報(FW/ツールのバージョンなど)
PHPのバージョンは7.1です。
php.iniは以下のようになっています。
display_errors = On error_reporting="2047" log_errors=On error_log="/home/hogehoge/log/phperror.log" allow_url_include=On allow_url_fopen = On
なにとぞ、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー