我整理了一个正则表达式来替换任何不是的东西:
正则表达式:/[^0-9a-zA-Z\$\s\.\,\?\!\$]+/m
我将正则表达式放在一起,以便它可以替换所有不需要的字符,并将结果字符串与其原始字符串进行比较。正则表达式仅在输入方法是文本输入时才有效,当它是textarea时,它会替换所有返回和制表符和空格。我做错了什么?
<form method="get" action="" style="border-bottom:solid 1px lightGrey;">
string:<br>
<textarea name="a"><?php $av=(isset($_GET))?$_GET['a']:""; echo $av; ?></textarea><br><br>
regex:<br>
<input type="text" name="b" value="<?php $bv=(isset($_GET))?$_GET['b']:""; echo $bv; ?>" /><br><br>
<input type='submit' value='done'/>
</form>
<?
if(isset($_GET)){
$count = null;
$returnValue = preg_replace($_GET["b"], '*', $_GET["a"], -1, $count);
echo "original string:<br>".$_GET['a']."<br><br>replacement string:<br>".$returnValue."<br><br>";
}
?>
答案 0 :(得分:0)
从我的测试中,magic quotes搞砸了输入。我可以解决它在脚本开头修复输入:
<?php
if(isset($_GET['a'])){
$_GET['a'] = stripslashes($_GET['a']);
$_GET['b'] = stripslashes($_GET['b']);
}
?>
的工作代码
<?php
if(isset($_GET['a'])){
$_GET['a'] = stripslashes($_GET['a']);
$_GET['b'] = stripslashes($_GET['b']);
}
?>
<form method="get" action="" style="border-bottom:solid 1px lightGrey;">
string:<br>
<textarea name="a"><?php $av=(isset($_GET["b"]))?$_GET['a']:""; echo $av; ?></textarea><br><br>
regex:<br>
<input type="text" name="b" value="<?php $bv=(isset($_GET["b"]))?$_GET['b']:"/[^0-9a-zA-Z\\$\\s\\.\\,\\?\\!\\$]+/m"; echo $bv; ?>" /><br><br>
<input type='submit' value='done'/>
</form>
<?php
if(isset($_GET["b"])){
$count = null;
$returnValue = preg_replace($_GET["b"], '*', $_GET["a"], -1, $count);
echo "original string:<br><pre>".$_GET['a']."</pre><br><br>replacement string:<br><pre>".$returnValue."</pre><br><br>";
}
?>