我试图使其在按下“提交”按钮的位置,并且所有输入仅保留字母和数字,然后回显到页面上。我没有收到任何错误,但仍不会打印出格式化的文本。我可以回显3行命令,但是将其转换为输入时会迷路。
有人可以帮助我让代码按照我想要的方式运行吗?我不是要清理数据或将其插入数据库。我只是试图将由于手指发胖,醉酒或其他任何原因而无法读取的单词删除到页面上
我尝试过
preg_replace('/^[a-zA-Z0-9]+/', $name)
preg_replace('/^[a-zA-Z0-9]+/', $_POST["name"])
<html>
<head>
<title>test</title>
</head>
<body>
<form id="form" class="appnitro" method="post" action="">
<h2>stripping extra crap</h2>
<div>
<br>
name<br>
<input id="element_1" name="name" type="text" maxlength="20" value="test$%+=-?"/> <br>
test1<br>
<input id="element_1" name="test1" type="text" maxlength="20" value="test$%+=-?"/> <br>
test2<br>
<input id="element_1" name="test2" type="text" maxlength="20" value="test$%+=-?"/> <br>
test3<br>
<input id="element_1" name="test3" type="text" maxlength="20" value="test$%+=-?"/> <br>
</div>
<input id="" class="button_text" type="submit" name="" value="Submit" />
</form>
</div>
</body>
</html>
<?php
if (empty($name) && empty($test1) && empty($test2) && empty($test3)) {
echo 'Please fill in the fields';
return false;
}
if (isset($_POST['submit'])){
implode("", $_POST);
preg_replace('/^[a-zA-Z0-9]+/', $_POST);//testing string to replace $name to letters and numbers only
}
echo 'name with only letters and numbers?<br>';
echo $name;
echo '<br>';
echo '<br>';
echo 'is post array still an array or string after implode?<br>';
echo $_POST;
echo '<br>';
echo '<br>';
echo 'test1 with only letters and numbers?<br>';
echo $test1;
echo '<br>';
?>
--------------------------------
<?php
foreach($_POST as $key=>$value)
{
echo "<br>$key=$value<br>";
}
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
?>
答案 0 :(得分:0)
'preg_replace'需要3个参数(请参见documentation)。
因此,您的情况应该是:$newName = preg_replace('/[^a-zA-Z0-9]+/', '', $name);
此外,我移动了'^',因为:
原来的位置,意思是“在文本开头匹配此正则表达式”。
在新位置上,表示“除了[a-zA-Z0-9]以外的任何东西”
因此,该函数现在将所有非字母字符替换为空(您可以阅读Regex not operator上JohanSjöberg的答案以获取更多信息)。