あいまい検索を行う場合の特殊文字エスケープ平成30年 10月 1日 作成

00447

概略

MySQLにてあいまい検索を行う場合、「%」は任意の0文字以上の文字列、「_」任意の1文字といった特殊文字が設定されており、これらを含む文字列を含んで検索しようとすると上手くいかない。

検索したい場合にはエスケープが必要となる。

その為、エスケープする手段を習得、あいまい検索にて「%」や「_」を含んでいても検索できるようにする。

手段

「addcslashes()」関数にて対応でき、「addcslashes()」関数はパラメータに羅列された文字の前にバックスラッシュを付けた文字列を返してくれる。

実装方法

構文

addcslashes("エスケープしたい文字列", "エスケープの対象となる文字列");

検索する文字列内に「%」があった場合

<?php
	// エスケープしたい文字列
	$str = '100%';
	// あいまい検索もパラメーター挿入を想定しての構文
	$result = '%'.addcslashes($str, "\_%").'%';
	
	var_dump($result);
	
	// 結果
	string(7) "%100\%%"
?>

検索する文字列内に「\」があった場合

<?php
	// エスケープしたい文字列
	$str = '\100000';
	// あいまい検索もパラメーター挿入を想定しての構文
	$result = '%'.addcslashes($str, "\_%").'%';
	
	var_dump($result);
	
	// 結果
	string(10) "%\\100000%"
?>

考察

「addcslashes()」関数にて、エスケープの対象となる文字列に対してバックスラッシュを付けた文字列返ってき、「bindValue」の値として使用できる。

最後までお読み下さり ありがとうございました。記事はここ迄です。

尚、本記事は作成から「5年以上」経過しています。

記事作成当時と現在の状況等により内容が適切でない場合があります。また、リンク切れが生じている場合もあります事を予めご了承下さい。

お気に入りに登録しますとお気に入り記事を一元管理でき、再度閲覧したい場合等 容易に記事を探し出す事ができますのでご活用下さい。

下段にはコメントを掲載しております。

広告バナー

コメント

頂いたコメントを下記に掲載しております。更に下部にはコメント投稿フォームを設けております。

注意事項を確認・了承した上、コメント投稿お願いいたします。

注意事項に該当するコメントにつきましては、事前告知なしに投稿したコメントの削除を行う場合があります。

予めご了承下さい。

  • 記事内容と無関係なコメント
  • 公序良俗に反するコメント
  • 個人情報や法令違反を含むコメント
  • その他、管理者が不適切と判断したコメント

現在 頂いているコメントはありません

返信先(コメント管理番号)コメントに対し返信する場合のみ
お名前・ハンドルネーム2~32文字内で入力下さい
メールアドレス公開される事はありません
電話番号半角数字+ハイフンで入力下さい
コメント全角500文字内で入力下さい