我有http标题字符串
GET /phpmyadmin/sql.php?db=monitor&table=boundries&token=08b1cd52b3bc0068ea470988e292f54d&pos=0 HTTP/1.1
Host: mylocalwebhost.net
以上是我将通过文件接收的示例字符串。在每个字符串中,我需要检查第一行的有效性。
'GET'部分可以是GET
PUT
POST
DELETE
中的任何一个。
如何使用正则表达式匹配第一行。请有人向我提供一个有效的正则表达式,我可以使用php preg_match()
答案 0 :(得分:1)
/^(?:GET|PUT|POST|DELETE) (.*?) \S+$/m
<?php
$re = '/^(?:GET|PUT|POST|DELETE) (.*?) \S+$/m';
$str = 'GET /phpmyadmin/sql.php?db=monitor&table=boundries&token=08b1cd52b3bc0068ea470988e292f54d&pos=0 HTTP/1.1
Host: mylocalwebhost.net';
preg_match($re, $str, $matches);
echo $matches[0];
答案 1 :(得分:0)
试试这个:
$string = '//phpmyadmin/sql.php?db=monitor&table=boundries&token=08b1cd52b3bc0068ea470988e292f54d&pos=0';
$parts = explode("&", $string);
$parts = array_map("trim", $parts);
foreach($parts as $current)
{
list($key, $value) = explode("=", $current);
$data[$key] = $value;
}
echo '<pre>';
print_r($data);
echo '</pre>';
结果是:
Array
(
[//phpmyadmin/sql.php?db] => monitor
[table] => boundries
[token] => 08b1cd52b3bc0068ea470988e292f54d
[pos] => 0
)