php如何在特定的地方获取字符串

时间:2016-03-05 16:33:04

标签: php regex

我有这个字符串

  

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

3 个答案:

答案 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