PHP将URL路径字符串拆分为2个字符串组件

时间:2013-06-17 16:26:21

标签: php arrays string url path

我有一个网址,比如说,$ url ='https://www.myurl.com/monkey-48-chicken-broccoli-ham.html'。我想把路径分成两个变量:一个包含数字(48),另一个包含数字后的所有内容(鸡肉 - 西兰花火腿)。

虽然我可以将下面代码中返回的数组分成单独的单词,但问题是,我不知道数字之后会有多少单词。

所以我的问题是,如何将路径拆分为“数字”和“数字后的所有内容”以将其存储为变量?这是我到目前为止所做的:

$url='https://www.myurl.com/monkey-48-chicken-broccoli-ham.html';
$parsedUrl = parse_url($url);
$path = parse_url($url, PHP_URL_PATH);
$parts = explode('/', $path);
$tag = end($parts);
$tag1 = str_replace("-", " ", $tag);  //replace - with spaces
$tag2 = str_replace(".html", "", $tag1);//delete the ".html" off the end
$tag3 = str_replace("monkey", "", $tag2); //delete the "monkey" word.

这是我需要帮助的地方:

$number = ???;
$wordstring = ???;

3 个答案:

答案 0 :(得分:1)

$url='https://www.myurl.com/monkey-48-chicken-broccoli-ham.html';
preg_match("/([0-9]+)[-](.+)\.html$/",$url,$matches);

$ matches [1]包含数字

$ matches [2]包含“chicken-broccoli-ham”

答案 1 :(得分:1)

试试这个:

<?php

$url = 'https://www.myurl.com/monkey-48-chicken-broccoli-ham.html';
$path = basename($url, ".html");
$path = str_replace("-", " ", $path);
preg_match("/(\d+)\s+(.*)/", $path, $match);

echo $match[1] // 48 (number)
echo $match[2] // word after number (chicken broccoli ham)

?>

答案 2 :(得分:0)

<?php

$url = 'https://www.myurl.com/monkey-48-chicken-broccoli-ham.html';
$path = parse_url($url, PHP_URL_PATH);
$parts = preg_split('/[0-9]+/', $path);

使用parse_url,您将获得网址的路径部分(monkey-48-chicken-broccoli-ham.html),然后只需将字符串拆分为数字。

注意:您需要删除结尾的 - 和结尾的.html以获得所需的结果。