0

我有一个 URL,比如 $url=' https://www.myurl.com/monkey-48-chicken-broccoli-ham.html '。我想采用路径并将结尾拆分为两个变量:一个包含数字(48),一个包含数字之后的所有内容(chicken-broccoli-ham)。

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

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

$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 = ???;
4

3 回答 3

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

$matches[1] 包含数字

$matches[2] 包含“鸡肉西兰花火腿”

于 2013-06-17T16:34:29.080 回答
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)

?>
于 2013-06-17T16:35:49.807 回答
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 才能达到您想要的结果。

于 2013-06-17T16:35:05.980 回答