0

私はPHPの初心者です。CSVファイルを検索するPHPスクリプトがあります。検索フィルターに最小 x 文字を追加するにはどうすればよいですか? そうしないと、エラー メッセージが表示されますか?

<?php
if ( !empty ( $_GET['search'] ) ) {
$search = mb_strtolower($_GET['search']);
$lines = file('file.csv');

$found = false;

foreach($lines as $line)
{
    $line = mb_strtolower($line);

    if(strpos($line, $search) !== false)
    {
        $line = explode(',', $line);

$found = true;
        $str = $line[0];
        $str = strtoupper($str);
        echo "<div class='datagrid'><table><thead><tr><th>MODEL</th><th width='50px;'>QUANTITY</th><th width='155px;'>MAIL</th></tr></thead><tbody><tr>";
        echo "<td style='font-weight:bold;'>" . $str; echo "</td>";
        echo "<td>" . $line[1]; echo "</td>";
        echo "<td><a href='mailto:mailaddress?subject=$str' id='button'>Send</a></td>";
        echo "</tr>";
        echo "</tbody></table></div>";
    }
}

if(!$found) {
    echo 'Nothing found.';
}
}
?>
4

1 に答える 1

0

strlen 関数を使用して、検索語の文字数を知ることができます

http://php.net/manual/en/function.strlen.php

<?php
$search_min_len = 3;//Change this to your needs
if ( !empty ( $_GET['search'] ) ) {
    $search = mb_strtolower($_GET['search']);
    if(strlen($search ) >= $search_min_len) 
    {
        $lines = file('file.csv');

        $found = false;

        foreach($lines as $line)
        {
            $line = mb_strtolower($line);

            if(strpos($line, $search) !== false)
            {
                $line = explode(',', $line);

        $found = true;
                $str = $line[0];
                $str = strtoupper($str);
                echo "<div class='datagrid'><table><thead><tr><th>MODEL</th><th width='50px;'>QUANTITY</th><th width='155px;'>MAIL</th></tr></thead><tbody><tr>";
                echo "<td style='font-weight:bold;'>" . $str; echo "</td>";
                echo "<td>" . $line[1]; echo "</td>";
                echo "<td><a href='mailto:mailaddress?subject=$str' id='button'>Send</a></td>";
                echo "</tr>";
                echo "</tbody></table></div>";
            }
        }

        if(!$found) {
            echo 'Nothing found.';
        }
    }
    else 
    {
        echo 'Minimum '.$search_min_len.' characters error';
    }
}
?>

それが役に立てば幸い

于 2013-10-16T09:45:45.513 に答える