PHP过滤器使用preg_match正则表达式获取HTTP / HTTPS

问题描述 投票:-2回答:1

这是从C / C ++应用程序发送的HTTP请求,现在我想过滤以获取HTTP / HTTPS以打印HTTP / HTTPS信息。我怎么去这个?

<?php

$logz = '/server/order.php?&IP=127.0.0.1?&hWid={e29ac6c0-7037-11de-816d-******************}&pcName=USER-PC&processName=C:Program FilesInternet Exploreriexplore.exe&buffer=POST /server/order.php HTTP/1.1
Content-Type: app1ication/x-www-form-urlencoded
Host: localhost
Content-Length: 272
Cache-Control: no-cache

/server/order.php?&IP=127.0.0.1?&hWid={e29ac6c0-7037-11de-816d-******************}&pcName=USER-PC&processName=C:Program FilesInternet Exploreriexplore.exe&buffer=https://localhost/test/logon.php username=kazim&password=kazim&login_button.x=0&login_button.y=0XÀž»}ÞÓŸýÁÊð#(˜Ð';

preg_match('/^(http|https):\\/\\/[a-z0-9_]+([\\-\\.]{1}[a-z_0-9]+)*\\.[_a-z]{2,5}'.'((:[0-9]{1,5})?\\/.*)?$/i', $logz,$match);
echo $match[1];

?>

编辑

我希望它发布这个https://localhost/test/logon.php那是什么

php regex
1个回答
0
投票

我用过这个:

$result = preg_match('/(http|https):\/\/[a-z0-9]+[a-z0-9_\/]*/',$logz,$match);

$ result只是从preg_match获取返回码。

在您的示例数据中,页面后面有一个空格:.../logon.php username=...。有了它,这很容易,只是不包括在[a-z0-9_\/]*的空间。并且在那里添加\/将使它匹配模式中的所有/,无论它们在哪里。

在你的模式中,你将每个加倍。但这不是必需的,因为\/意味着不要像qzxswpoi那样对待/,就像preg_match所期望的正则表达式分隔符一样。一个\就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.