[WordPress] MySQL でクエリとにかくすることがあります”o”と「0」を読むか?

スポンサーリンク

質問

私はあまりわからないこれを正しく説明する方法が最善をみます。Ajax を介して特定の記事のテキスト入力フィールドに基づくフィルター処理を使っています。これの文字を含むすべての記事を一覧表示し、ユーザー入力を数値します。かなり基本的なものです

今、私のクライアント「スマート検索」機能を追加する望んでいます。基本的には、ユーザーが「0123」を入力したい場合すべての投稿に「0123」を含むタイトルを持つリストに”o123″だけでなく。同じことは、”s”と「5」で発生する必要があります。だから”1234s”が入力された場合は”1234s”を含むすべての記事と「12345」表示されます。これを行う方法はありますか?

ここで何があるところ、numberchar はテキスト入力の名前です。

$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '".trim($_POST['numberchar'])."%' order by ID desc";

答え

str_replace()

// Replace "o" with "0"
$numberchar = str_replace("o", "0", trim($_POST['numberchar']));
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $numberchar ."%' order by ID desc";

答え

これを変更する必要がこれに:

$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE REPLACE(`post_title`,'[a-zA-z]+','') LIKE '%".trim(preg_replace("[^0-9]","", $_POST['numberchar']))."%' order by ID desc";

すべてをストリップの文字し、のみ番号、% の広告の初め、o1234 のようになりますを追加することができます

答え

MySQL を使用することができます置換または PHP の str_replace

クエリ自体で文字を 置き換える に MySQL の REPLACE 関数を使用できます:

REPLACE('queryStringArgument', 'o', '0')

PHP を使用することもできます str_replace サーバーでそれを行うにしたい場合:

$numberchar = isset($_POST['numberchar']) ? $_POST['numberchar'] : ""; // Get the POSTed value if it's set.
$fixedNumberchar = str_replace("o", "0", $numberchar);
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $fixedNumberchar ."%' order by ID desc";

がこれは おそらく このような良いアイデア; 無効なパラメーターをキャッチする必要があります何か間違ってやっていることをユーザーに通知しています。それは決定するためです

http://stackoverflow.com/questions/28028878/in-a-mysql-query-is-there-anyway-to-make-o-read-as-0-and-vice-versa

スポンサーリンク

Leave a Reply