用php数组或搜索/替换抓取URL的第一个目录


Grab first directory of URL with php array or search/replace

我有一个URL,看起来像这样:

http://www.site.com/subdomain1/product/123123/variable-text-goes-here

我正在尝试提取URL中的第一个目录,即/subdomain1/

我真的不在乎如何获得它,无论是通过通配符替换还是通过将URL分解成数组。不幸的是,不管怎样,我的运气都不太好。

一些要点:a) /product/将始终是完全相同的文本"产品"b) url的数量和可变文本部分(最后2位)是完全可变的。c) 子域1部分也是可变

这是我的代码:

<?php 
$r = $_SERVER['REQUEST_URI']; 
$test1 = explode('/', $kevtest, 1);
echo 'This is the directory - '.$test1;
 ?>

页面上的结果如下:

This is the directory - Array

我对数组不太熟悉,所以我没有任何运气提取数组的结果。

或者,也可以搜索/替换掉变量URL的其余部分,以获得URL的第一部分。

$test1 = str_replace("/product/ (how to I wildcard here?)","",$r);
$url = 'http://example.com/subdomain1/product/123123/variable-text-goes-here';
$path = parse_url($url)['path'];
echo explode('/', $path)[1];

如果您的PHP是<5.4,使用此:

$url = 'http://example.com/subdomain1/product/123123/variable-text-goes-here';
$urlParts = parse_url($url);
$path = $urlParts['path'];
$subdomain = explode('/', $path);
echo $subdomain[1];

数组在有键和值的情况下工作

$var = array('val1', 'val2');
var_dump($var);

转储

array(2) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val2"
}

01是这里的键,您可以通过$var[0]等引用它们。现在,通过分隔符分解字符串并返回一个数组来进行分解。您可以使用var_dump 查看内容

$var = explode('/', '/subdomain1/product/123123/variable-text-goes-here');
var_dump($var);

转储

array(5) {
  [0]=>
  string(0) ""
  [1]=>
  string(10) "subdomain1"
  [2]=>
  string(7) "product"
  [3]=>
  string(6) "123123"
  [4]=>
  string(23) "variable-text-goes-here"
}

所以。。。在这种情况下,您希望引用

$var[1];

测试:

<?php
   $r = $_SERVER['REQUEST_URI']; 
   $test1 = explode('/', $r);
   echo $test1[3]."Array position #3<br />"; 
?>