Php 具有特殊字符的正则表达式问题

Php 具有特殊字符的正则表达式问题,php,Php,当我尝试使用正则表达式进行筛选时,总是得到空结果。我试图从包含表单输入参数的httprequest中筛选特殊字符,问题是,它没有发布任何我能看到的内容 我的代码如下所示 <?php $string = 'POST /login.php HTTP/1.1 Host: www.copyscape.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0 Accept: tex

当我尝试使用正则表达式进行筛选时,总是得到空结果。我试图从包含表单输入参数的httprequest中筛选特殊字符,问题是,它没有发布任何我能看到的内容

我的代码如下所示

<?php
$string = 'POST /login.php HTTP/1.1
Host: www.copyscape.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://www.copyscape.com/login.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 74
Cookie: ck=BXLD2UDMUA88KWGC0GK8WCGOC; PHPSESSID=8cup5f02hbetnbfbbv9vug37q0
Connection: keep-alive
Upgrade-Insecure-Requests: 1

login_username=jeezman88%40vfxm.mail.com.com&login_password=(Passw0rd)&log_in=Log+inÿÿÿ7—R';

preg_match('/=\/&\$\%/',$string, $match);
echo $match[1];
?>

在$match中索引错误, 检查:

阅读:

结果是匹配数组,[0]-整个regexp匹配,[>1]-组匹配。由于没有大括号()-索引大于1的结果为空。

在$match中索引错误, 检查:

阅读:

结果是匹配数组,[0]-整个regexp匹配,[>1]-组匹配。由于没有大括号()-索引大于1的结果为空。

匹配

login_username=jeezman88%40vfxm.mail.com.com&login_password=(Passw0rd)&log_in=Log+inÿÿÿ7—R
尝试:

它匹配从
login\u username=
开始直到行尾的整个字符串。注意,正则表达式使用
m
-多行修饰符

看起来你正在尝试匹配整个帖子主体。您可以使用:

相配

login_username=jeezman88%40vfxm.mail.com.com&login_password=(Passw0rd)&log_in=Log+inÿÿÿ7—R
尝试:

它匹配从
login\u username=
开始直到行尾的整个字符串。注意,正则表达式使用
m
-多行修饰符

看起来你正在尝试匹配整个帖子主体。您可以使用:


我认为您的正则表达式工作正常,但您访问
$match
时有点不正确。这场比赛看起来像这样:

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "%"
  }
}
array(1) {
  [0]=>
  array(0) {
  }
}
如果您的regexp不匹配,它将如下所示:

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "%"
  }
}
array(1) {
  [0]=>
  array(0) {
  }
}

似乎您要查找的是
数组\u key\u exists(0,$match[0])
我认为您的正则表达式工作正常,但您访问
$match
时有点不正确。这场比赛看起来像这样:

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "%"
  }
}
array(1) {
  [0]=>
  array(0) {
  }
}
如果您的regexp不匹配,它将如下所示:

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "%"
  }
}
array(1) {
  [0]=>
  array(0) {
  }
}
似乎您要查找的是
数组\u键\u存在(0,$match[0])
编辑这两个字段:

preg_match_all('/[=\/&\$\%]/',$string, $match);
var_dump($match[0]);
编辑这两个字段:

preg_match_all('/[=\/&\$\%]/',$string, $match);
var_dump($match[0]);


现在我该如何处理它来回应这个登录用户名=jeezman88%40vfxm.mail.com.com&login密码=(Passw0rd)&log\u-in=log+in\255;ÿÿ7-Rpreg\u-match\u all(“/login\u-username=([^&]*)和login\u-password=‌([^&]*)和登录=(.*)/,$str,$matches);$unames=$matches[1];$pwd=$matches[2];解析错误:语法错误,第17行的/tmp/execpad-aa829283bb74/source-aa829283bb74中的意外文件结尾yupp,阅读文档,尝试修复愚蠢的错误)如果你是laizy,请检查:,和happyhacking;)我看到了,谢谢,但是如果这是一个随机网页,没有这个登录名作为表单参数,我该怎么办ad?我以前没有做过regex,现在我如何使用它来响应这个登录用户名=jeezman88%40vfxm.mail.com.com&login密码=(Passw0rd)&log密码=log+in密码(“/login用户名=([^&]*)”和登录密码=‌([^&]*)和登录=(.*)/,$str,$matches)$unames=$matches[1]$pwd=$matches[2];解析错误:语法错误,第17行的/tmp/execpad-aa829283bb74/source-aa829283bb74中出现意外的文件结尾(yupp,阅读文档,并尝试修复愚蠢的错误)如果您是laizy,请检查:,和happyhacking;)我看到了,谢谢,但是如果它是一个随机网页,没有这个登录用户名作为表单参数,我该怎么办呢?我以前没有做过regex,我想让它过滤这个部分login_username=jeezman88%40vfxm.mail.com&login_password=(Passw0rd)&log_in=log+inÿÿÿÿ7-R并回显它。然后只把那个部分放到
$string
我想让它过滤这个部分login_username=jeezman88%40vfxm.mail.com&loginÿPassw0rd=(Passw0rd)&log_in=log+inÿÿÿÿ7-R并回显。然后仅将该部分放入
$string
是否尝试将整个字符串匹配到最后?@Pavel yes这是我一直尝试实现的检查我的答案。这对我很管用。你是想把整根绳子配到最后吗?@Pavel是的,这就是我一直想达到的目的。检查我的答案。它对我很有用。我看到了,谢谢,但是如果它是一个随机网页,没有这个登录用户名作为表单参数,我该怎么办呢?我以前没有做过regex,谢谢你,这正是我需要的!必须从preg_match_all更改为preg_match,使用您的正则表达式,一切都是超级的!我看到了,谢谢,但是如果它是一个随机网页,没有这个登录用户名作为表单参数,我该怎么办呢?我以前没有做过regex,谢谢你,这正是我需要的!必须从preg_match_all更改为preg_match,使用您的正则表达式,一切都是超级的!