如何过滤任何特殊字符

Reh*_*hmy 3 php

如果我有这样的形式的输入文本

<form action="add.php" method="post">
<input type="text" name="txt" id="txt">
<input type="submit" name="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

add.php代码如下

$sql= "insert into mytable set myname='$txt'";
executeupdate($sql);
Run Code Online (Sandbox Code Playgroud)

我的问题如何过滤来自任何特殊字符的任何文本输入我只想要它Aa-Zz-1234567890(字母和数字).

这是我的尝试,但我不确定它是否真的过滤所有特殊字符或可以通过任何

我在add.php中添加了以下代码

$cleared = strip_tags($txt);
$sql= "insert into mytable set myname='$cleared'";
executeupdate($sql);  // this should clear the name before insert
Run Code Online (Sandbox Code Playgroud)

还有其他建议还是更好的方法?

dec*_*eze 7

$txt = preg_replace('/[^a-zA-Z0-9]/', '', $txt);
Run Code Online (Sandbox Code Playgroud)

此外,AZ,0-9范围之外的字符没有"特殊".


Mr *_*der 7

 $whiteSpace = '\s';  //if you dnt even want to allow white-space set it to ''
$pattern = '/[^a-zA-Z0-9'  . $whiteSpace . ']/u';
 $cleared = preg_replace($pattern, '', (string) $txt);
Run Code Online (Sandbox Code Playgroud)