PHP検索 完全一致のみヒット
詳しくないので質問内容におかしな点が多々あるかと思いますが・・
サイト内検索でcsvファイルから文字列を呼び出し一致した文字列を出力するというスクリプトで
完全に一致した文字列だけ出力させたいのですが、
たとえばcsvに「AAA」「ABC」「ARZ」のデータがあり
「A」で検索しても何も出力されず、「AAA」と検索した時だけ「AAA」だけを出力したいのですが
「A」で検索すると「A」から始まる全ての文字列(↑で挙げた文字列全て)が出力されてしまって困っています。
どの部分を変えると完全に一致した文字列だけを検索できるようになるのか指摘してくださればと思います。
<?php
function funcSiteLink($str, $pass, $csvFileName){
if($str){
$keyword = mb_convert_kana($str, "s","SJIS");
$arr_keyword = preg_split('/[\s]+/', $keyword, -1, PREG_SPLIT_NO_EMPTY);
$file = fopen($csvFileName,"r");
$i = 0;
while(!feof($file)){
$csv = fgets($file);
$str = explode(",", $csv);
$keywordPassArr[$i] = $str;
$i++;
}
$judg = 0;
foreach($arr_keyword as $val){
foreach($keywordPassArr as $kpa){
preg_match("/$val/", $kpa[0], $matches, PREG_OFFSET_CAPTURE);
if($matches[0][1] === 0){
echo '<p><a href="'.$pass .$kpa[1] .'">' .$kpa[0] .'</a></p>';
$judg++;
}
}
}
if($judg === 0){
echo "<p>一致しません</p>";
}
fclose($file);
}else{
echo "<p>一致しません</p>";
}
}
?>
お礼
ありがとうございます。できました。 forを使用してほしい桁までを取得できました。前回投稿した内容が完全にできました。