preg_replaceを作成しました:
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);
しかし、私が検索ボックスで検索すると、これ
!@#$%^&*()_+
動いていない。
誰かがこの「!@#$%^&*()_ +」を検索すると、出力は「結果が見つかりません」になると予想されます。
誰もがより良いpreg_replaceを提案できますか?
preg_replaceを作成しました:
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);
しかし、私が検索ボックスで検索すると、これ
!@#$%^&*()_+
動いていない。
誰かがこの「!@#$%^&*()_ +」を検索すると、出力は「結果が見つかりません」になると予想されます。
誰もがより良いpreg_replaceを提案できますか?
正規表現をデータベース呼び出しに関与させようとしている場合、検索された値の内容から不正な文字が削除され、空の文字列としてデータベースに送信されます(結果は見つかりません)。
$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!';
}