如何在将 url 与特定字符串匹配后从 url 获取用户名


How to get username from an url after matching url with a particular string?

我想在检查 url 的其余部分类似于字符串后从 url 获取用户名。

例如:我需要网址"http://mysite.com/username"中的用户名。 在此之前需要检查

网站网址为"http://mysite.com/",用户名部分仅包含字母,数字,

下划线和句点..

怎么可能使用php?

我已经用PHP5.4.5测试过:

<?php
$simple = 'http://mysite.com/username';
if ( preg_match('/http:'/'/mysite'.com'/(?:([-'w]+)'/?)/', $simple, $match) > 0){
    echo 'Username is: '.$match[1] . "'n";
}
$complex = 'http://mysite.com.zzz.yyy/john/';
if ( preg_match('/http:'/'/'w+(?:'.'w+)*'/(?:([-'w]+)'/?)/', $complex, $match) > 0){
    echo 'Username is: '.$match[1] . "'n";
}
?>

输出:

Username is: username
Username is: john

有用于解析 URL 的函数:

http://php.net/manual/en/function.parse-url.php

如果这样做:

$url = 'http://mysite.com/username';
$array = parse_url($url);
print_r($array);

你会看到这个:

Array
(
    [scheme] => http
    [host] => mysite.com
    [path] => /username
)

现在,您可以单独处理 URL 的路径。如果不仅仅是/username/,那么您将在"/"上拆分并使用返回的第一项。

    $path_array = explode('/',$array['path']);

这是你所拥有的:

preg_match('/mysite.com//[a-zA-Z0-9-]';, $user_name, $matches);

你没有分隔符,;是怎么回事?试试这个:

preg_match('|/mysite.com//[a-zA-Z0-9-]|', $user_name, $matches);
$url = "http://mysite.com/username";
$arr = parse_url($url);
if($arr['host'] != "mysite.com"){
    // do something 
}
print_r(trim($arr['path'],'/'));
如果你想用

正则表达式尝试这个,你可以使用一个模式有两个捕获组,一个用于域名,一个用于用户名,如下所示:

^http':'/'/([^/]+)'/(.+)$

(我在那里逃脱了冒号,因为老实说,我不记得是否有必要。 如果没有,则不需要转义字符)

这将查找 http://后跟一个不包含/的字符串(因此它会一直抓取直到到达下一个/),然后期望/然后抓取其他任何后续内容,直到字符串结束。