我有这个字符串
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
如果你不想要 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;
输出:
我的公司名称
旁注:
- 此代码不会检查格式错误的 url,因此您应该自己进行一些检查。
- 如果您使用端口号作为字符串来测试 url(如问题中所示),它将不起作用。
它可以在一行中完成:
$url = 'http://myipaddress:8080/mycompanyname/morethings?lovelyparameter';
echo explode('/', parse_url($url, PHP_URL_PATH))[1];
输出:
我的公司名称
您可以使用爆炸为
$abc = 'http://myipaddress:myport/mycompanyname/morethings?lovelyparameter';
$a = explode('/', $abc);
echo '<pre>';
print_r($a[3]);
echo '</pre>';
分解将字符串分解成多个部分并返回一个字符串数组,以便您也可以签入 mycompanyname 的数组。
对于记录,您缺少适当的分隔符。正则表达式解决方案是:
https?://.+?/(?P<company>[^/]+)/
在PHP
中,这将是:
$regex = '~https?://.+?/(?P<company>[^/]+)/~';
$url = 'http://myipaddress:8080/mycompanyname/morethings?lovelyparameter';
preg_match($regex, $url, $match);
echo $match["company"];
// mycompanyname