2016-03-05 79 views
3

得到一个字符串我有这个字符串PHP如何在一个特定的地方

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

是'mycompanyname'刚过':MyPort上/'? – 2016-03-05 16:34:50

+0

这是某些字符串中的固定位置,例如第三个参数或其他?您可以使用/作为分隔符来标记字符串。 –

+0

@noob它总是在端口之后,但它也跟着其他的,就像你看到的例子中有一个“morethings”,后面是我的公司 – user2059935

回答

4

如果你不想预浸功能,并从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

您可以使用爆炸作为

$abc = 'http://myipaddress:myport/mycompanyname/morethings?lovelyparameter'; 

$a = explode('/', $abc); 

echo '<pre>'; 
print_r($a[3]); 
echo '</pre>'; 

的爆炸断弦进入第艺术和返回一串字符串,所以你也可以检查我的公司名称数组..

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