我有这个字符串
http://myipaddress:myport/mycompanyname/morethings?lovelyparameter
我想接受mycompanyname
任何帮助?
我试过了:
$indexName = preg_match("http://p+:p+/","http://myipaddress:myport/mycompanyname/morethings?lovelyparameter" );
但是我收到了这个错误:
preg_match(): Delimiter must not be alphanumeric or backslash
答案 0 :(得分:4)
如果您不想使用preg函数和url中的其他内容,则可以使用parse_url()。它看起来像这样:
$a = 'http://myipaddress:8080/mycompanyname/morethings?lovelyparameter';
$b = parse_url($a);
print_r($b);
输出:
Array
(
[scheme] => http
[host] => myipaddress
[port] => 8080
[path] => /mycompanyname/morethings
[query] => lovelyparameter
)
这样,只需使用:
$path = $b['path'];
$foo = explode('/', $path)[1];
echo $foo;
输出:
mycompanyname
<小时/> 旁注:
可以在一行中完成:
$url = 'http://myipaddress:8080/mycompanyname/morethings?lovelyparameter';
echo explode('/', parse_url($url, PHP_URL_PATH))[1];
输出:
mycompanyname
答案 1 :(得分:1)
您可以使用explode作为
$abc = 'http://myipaddress:myport/mycompanyname/morethings?lovelyparameter';
$a = explode('/', $abc);
echo '<pre>';
print_r($a[3]);
echo '</pre>';
explode将字符串分成几部分并返回一个字符串数组,这样你就可以检查数组中的mycompanyname ..
答案 2 :(得分:1)
对于记录,您错过了适当的分隔符。 A regex solution would be:
https?://.+?/(?P<company>[^/]+)/
在PHP
中,这将是:
$regex = '~https?://.+?/(?P<company>[^/]+)/~';
$url = 'http://myipaddress:8080/mycompanyname/morethings?lovelyparameter';
preg_match($regex, $url, $match);
echo $match["company"];
// mycompanyname