mysql php搜索表单 - 想在选择查询之前从用户输入中删除特殊字符

时间:2012-04-22 14:45:00

标签: php mysql regex forms search

我试图弄清楚如何在运行SQL SELECT查询之前从PHP搜索表单中删除用户输入中的特殊字符。

我有一个PHP搜索表单,用于将用户输入提交给选择查询> mysql 5> Linux操作系统。 select查询在一列中查找LIKE匹配,并将结果返回到结果页面。数据库中的列没有特殊字符 - 只是字母数字值。

我的数据库字段值看起来像这个33345678DEP

如果用户输入333-456 * 78DEP,我该如何删除特殊字符?

我读到了有关REGEX的内容 - 看起来可能是答案,但我不知道如何实现它。

预先形成搜索的MY PHP代码如下:

if (isset($_GET['InventoryByVendorForm'])) {
$colname_InventoryByVendorResults = $_GET['InventoryByVendorForm'];
}
mysql_select_db($database_ic3, $ic3);
$query_InventoryByVendorResults = sprintf("SELECT icCombinedSupplier_wrk.icMaster_icmKEY, icCombinedSupplier_wrk.icsSupplierID, icCombinedSupplier_wrk.icsPartNum, icCombinedSupplier_wrk.icsQuantityOnHand, icCombinedSupplier_wrk.icsCost, icCombinedSupplier_wrk.icsCore, icCombinedSupplier_wrk.icsLastInventoryUpdate, icMaster.icmLineCode, icAttributes.`icaPartslink#` AS icaPartslink FROM icMaster INNER JOIN (icCombinedSupplier_wrk INNER JOIN icAttributes ON icCombinedSupplier_wrk.icMaster_icmKEY = icAttributes.icMaster_icmKEY) ON icMaster.icmKEY = icCombinedSupplier_wrk.icMaster_icmKEY WHERE `icCombinedSupplier_wrk`.`icMaster_icmKEY` Like %s ORDER BY icMaster_icmKEY ASC", GetSQLValueString("%" . $colname_InventoryByVendorResults . "%", "text"));

我最好的猜测是我需要在声明周围实现REGEX [[alnum]]的使用:

$colname_InventoryByVendorResults = $_GET['InventoryByVendorForm']

如何从搜索框中的用户输入中删除所有非字母/数字字符?

1 个答案:

答案 0 :(得分:1)

preg_replace是执行此操作的正确工具:

$validated = preg_replace("/[^A-Za-z0-9]/","",$colname_InventoryByVendorResults);

字母数字字符集有快捷方式,但这种方式非常直观易懂。

“^”表示选择,因此任何不是字母数字的字符都将被空字符串替换。

祝你有愉快的一天, 斯蒂芬