-1

preg_replaceを作成しました:

$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);

しかし、私が検索ボックスで検索すると、これ

!@#$%^&*()_+

動いていない。

誰かがこの「!@#$%^&*()_ +」を検索すると、出力は「結果が見つかりません」になると予想されます。

誰もがより良いpreg_replaceを提案できますか?

4

1 に答える 1

2

正規表現をデータベース呼び出しに関与させようとしている場合、検索された値の内容から不正な文字が削除され、空の文字列としてデータベースに送信されます(結果は見つかりません)。

$searchTerm = '!@#$%^&*()_+';
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);

// $searchTerm = '';
// Send this off to DB (which will return false)

if (!$search->search_db($searchTerm)) {
   echo 'No search results!';
}

DBにアクセスしたくない場合は、現在のスクリプトの範囲内に収めることができます。

if (preg_match('/[^\p{L}\p{N}\s]/u', $searchTerm)) {
   echo 'No search results!';
}
于 2013-01-12T11:30:41.103 に答える