「checkText3」が処理されない
とあるHOWTO本を見ながら、独学でPHPを勉強中です。
サンプルプログラムを動作させようとマニュアル通りに記述してみたのですが、一部分だけが上手く処理されません。
付属CDに収められているphpファイル自体がこのような記述になっている為、マニュアル自体に間違いがあるのかな?と思うのですが、
どこがおかしいのか解らずにいます。
お分かりになる方がいれば、ご教授願えませんでしょうか?
上手く処理されないのは「//テキストチェック3.バイバイされたらバイバイを返す」の部分です。
よろしくお願い致します<(_ _)>
<?php
$res = "";
if(isset($_POST['text1']) == false)
{$res = getAisatsu();}
else{$text1 = $_POST['text1'];
if($text1 == "")
{$res = "え? なんていったの?";}
else{$flag =false;
//まずcheckTextであいさつ文をチェック
$str = checkText($text1);
if($str != false)
{$flag = true;
$res = $str;
}
//続いてcheckText2で悪口の対応
if($flag == false)
{$str = checkText2($text1);
if($str != false)
{$flag = true;
$res = $str;
}
}
//最後にcheckText3でさよならの対応
if($flag == false)
{$srt = checkText3($text1);
if($str != false)
{$flag = true;
$res = $str;
}
}
//すべてダメならテキストを分解してチェック
if($flag == false)
{$arr = bunkatsu($text1);
foreach($arr as $str)
{if(getWordCheck($str) == true)
{$flag = true;
$res = $str . "って、なぁに?";
break;
}
}
}
//それでもダメなら全文で聞き返す
if($flag == false)
{$res = delTouten($text1) . "って、なぁに?";}
}
}
//時間によって異なるあいさつ文を返す
function getAisatsu(){
$arr = array('……ね、眠い','おはよう!','こんにちは~','こんばんわ',);
$d = getdate();
$t = $d['hours'];
$t2 = (int)($t / 6);
return $arr[$t2];
}
//テキストチェック。あいさつ文があれば対応する挨拶を返す
function checkText($s){
if($s == ""){return false;}
$res = false;
$data = array('こんにちは','こんにちわ','こんちは','こんちわ');
foreach($data as $str)
{if (mb_strpos($s,$str) !== false)
{$res = 'どうも、' . $str . '!';
break;
}
}
return $res;
}
//テキストチェック2.悪口が書かれていたら文句をいう
function checkText2($s)
{if ($s ==""){return false;}
$res = false;
$data = array('バカ','馬鹿','あほ','アホ','阿呆');
foreach($data as $str)
{if(mb_strpos($s,$str) !== false)
{$res =$str . 'じゃないもん!';
break;
}
}
return $res;
}
//テキストチェック3.バイバイされたらバイバイを返す
function checkText3($s)
{if ($s == ""){return false;}
$res = false;
$data = array('ばいばい','バイバイ','じゃあね');
foreach($data as $str)
{if(mb_strpos($s,$str) !== false)
{$res = 'それじゃ' . $str . '!';
break;
}
}
return $res;
}
//句読点を削除する
function delTouten($s)
{$res = str_replace('。','',$s);
$res = str_replace('?','',$res);
$res = str_replace('!','',$res);
$res = str_replace('.','',$s);
$res = str_replace('?','',$res);
$res = str_replace('!','',$res);
return $res;
}
//テキストを句読点で分割し、配列として返す
function bunkatsu($s)
{mb_regex_encoding("sjis");
$res = mb_ereg_replace('[。、?!,.!?]','',$s);
$arr = mb_split(' ',$res);
return $arr;
}
//主語や接続詞が含まれているかを調べる
function getWordCheck($s)
{if ($s == ""){return false;}
$res = $s; $data = array('私','わたし','僕','ぼく','俺','おれ','オレ');
foreach($data as $str)
{if(mb_strpos($s,$str) !== false)
{$res = false;
break;
}
}
return $res;
}
//サニタライズ
function getSeftyText($s)
{$res = str_replace("<","<",$s);
$res = str_replace(">",">",$res);
return $res;
}
?>
お礼
ご回答ありがとうございます。 trim() で除去できました!ありがとうございます。 ordの方は、 print ord($res[0]);//13 print ord($res[1]);//10 print ord($res[2]);//227 print ord($res[3]);//227 という結果でした。 この結果からどういうことが推測できるのでしょうか?