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

时间:2018-03-01 13:35:28

标签: php regex

这是从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 那就是什么

1 个答案:

答案 0 :(得分:0)

我用过这个:

ruby {
    code => "event.set('[is_tags_empty]', 'true') if event.get('[tags]').length == 0"
}

if [is_tags_empty] {
    mutate {
        remove_field => ["tags","is_tags_empty"]
    }
}

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

在您的示例数据中,您在页面后面有一个空格:$result = preg_match('/(http|https):\/\/[a-z0-9]+[a-z0-9_\/]*/',$logz,$match); 。有了它,这很容易,只是不要在.../logon.php username=...中包含空格。在其中添加[a-z0-9_\/]*将使其与模式中的所有\/匹配,无论它们位于何处。

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