根据分隔符拆分列值?
假设我有一列 'URL' 项下的条目,像这样:根据分隔符拆分列值?
URL
“GET /书籍/小说ID = 324223”
“GET /教室/ HTTP /1.0"
“GET /register.php HTTP/1.0”
“POST /thankyou.php HTTP/1.0”
“GET /register.php?error=alreadyregistered HTTP/1.0”
“POST/processlogin.php?接下来=%2Fregister.php%3Ferror%3Dalreadyregistered HTTP/1.0"
“GET /register.php?error=alreadyregistered HTTP/1.0”
“GET /书/小说?ID = 324273”
我需要一个查询,这将帮助我获取第一对斜线中包含的单词,URL中的'/'。例如。 '教室','注册'等...
而且条目不限于这些..所以我需要一个通用的查询,而不是一个特定的一个..帮助?
这应该做的伎俩(如果我理解正确的问题):
$request = "GET /books/fiction?id=324223";
// captures URI from request string
$request_array = explode(' ', $request);
$request_uri = $request_array[ 1 ];
// captures anything between/and . or/
preg_match('#\/(.*?)[./]#', $request_uri, $matches);
var_dump($matches);
这是我第一次看到它,它的工作就像一个魅力:) :)经过一个小小的编辑... as .. isset(matches [1]) var_dump($ matches [1]); //为我的要求.. 谢谢Ondrej :) – wave5459 2011-04-29 23:46:56
$teststr = array(
"GET /books/fiction?id=324223",
"GET /classroom/ HTTP/1.0",
"GET /register.php HTTP/1.0",
"POST /thankyou.php HTTP/1.0",
"GET /register.php?error=alreadyregistered HTTP/1.0",
"POST /processlogin.php?next=%2Fregister.php%3Ferror%3Dalreadyregistered HTTP/1.0",
"GET /register.php?error=alreadyregistered HTTP/1.0",
"GET /books/fiction?id=324273");
foreach($teststr as $str)
if(preg_match('/\/(?P<folder>\w+)\//', $str, $match))
echo $match['folder']."<br />";
回报
books
classroom
books
这很好,谢谢:)但execution'll会花费时间,因为我的数组大小增加... – wave5459 2011-04-29 23:45:27
这一个班轮应该这样做:
$node = preg_replace('~^.*?/([^./]+).*$~', '$1', $string);
您可以see the output result at Codepad:
books extracted from GET /books/fiction?id=324223
classroom extracted from GET /classroom/ HTTP/1.0
register extracted from GET /register.php HTTP/1.0
thankyou extracted from POST /thankyou.php HTTP/1.0
register extracted from GET /register.php?error=alreadyregistered HTTP/1.0
processlogin extracted from POST /processlogin.php?next=%2Fregister.php%3Ferror%3Dalreadyregistered HTTP/1.0
register extracted from GET /register.php?error=alreadyregistered HTTP/1.0
books extracted from GET /books/fiction?id=324273
为什么你不能在后处理中做到这一点? – 2011-04-29 21:18:34