Php Regexp和变量
我有这个表单,它输出一些字母和字长。但是我在从数据库中获取正确的输出时遇到了一些问题Php Regexp和变量,php,mysql,regex,Php,Mysql,Regex,我有这个表单,它输出一些字母和字长。但是我在从数据库中获取正确的输出时遇到了一些问题 if ($_SERVER['REQUEST_METHOD'] == 'POST') { $letters = mysql_real_escape_string($_POST['letters']); $length = mysql_real_escape_string($_POST['length']); echo "Letters: $letters";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$letters = mysql_real_escape_string($_POST['letters']);
$length = mysql_real_escape_string($_POST['length']);
echo "Letters: $letters";
echo "Lengte: $length";
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[$letters]{$length}' ")
or die ('Error: '.mysql_error ());
while ($row=mysql_fetch_array($res)){
echo $row['word'];
echo "<br />";
}
}
else {
echo "Foutje";
}
if($\u服务器['REQUEST\u METHOD']=='POST'){
$letters=mysql_real_escape_字符串($_POST['letters']);
$length=mysql\u real\u escape\u字符串($\u POST['length']);
回音“字母:$字母”;
回声“长度:$length”;
$res=mysql_查询(“从单词REGEXP'[$letters]{$length}'所在的单词中选择单词)
或者死('Error:'.mysql_Error());
while($row=mysql\u fetch\u数组($res)){
echo$row['word'];
回声“
”;
}
}
否则{
回声“Foutje”;
}
如果我将$length更改为表单输入的整数,我的脚本将正常工作。复制/粘贴[$letters]6次同样有效。我想引用是有问题的,但我完全搞不清楚它到底是什么
有人能看出我做错了什么吗?
谢谢。PHP将
{}
解释为内部变量的分隔符,因为您使用的是双引号字符串。通过连接更改报价:
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[" . $letters . "]{" . $length ."}'")
或者在双引号字符串中加倍{}
,以便将外部对解释为文本
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[$letters]{{$length}}' ")
注意,您还应该验证$length
是否包含正整数
if (!ctype_digit($length)) {
// error - length must be an int
}
尝试这样做:
res=mysql_query("SELECT word FROM words WHERE word REGEXP '[".$letters."]{".$length."}' ")
我有一种预感,$作为regex的一部分被加密以确保输入不会破坏regexp模式。最后一个做了。谢谢,我完全忘了那个选项!