需要帮助从网址中删除部分

时间:2015-07-06 00:46:20

标签: php url preg-replace preg-match

我需要从网址获得一部分,我知道这个网站上有很多教程 但是我仍然无法得到它......

此示例网址:

https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn

我只需要来自该网址的此部分,不包含域名,斜杠和结束网址

want-to-keep-35

已经尝试过这段代码:

preg_replace('|https?://www\.[a-z\.0-9]+|i', '', $serp);

但没有工作。如果有人在这里可以帮助我,请告诉我,谢谢

4 个答案:

答案 0 :(得分:1)

如果这很简单,您可以使用以下简单方法来获得您想要的东西:

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn';
$re = '#https://www\..*?\..*?/(.*?)/#i';

preg_match($re, $url, $matches);
echo $matches[1]; // want-to-keep-35

答案 1 :(得分:0)

如果您使用两种模式并连续运行它们,您将能够消除第一部分,然后消除第二部分。

模式1将找到http或https,然后是://。然后它将读取所有不是斜杠的东西,直到第一个斜杠有效地从URL中删除域。最后,它会混淆你不想要的斜线。

模式2将从以want-to...开头的字符串中获取并找到第一个斜杠及其后的所有内容。

$url = "https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn";
$pattern1 = "/https?\:\/\/[^\/]+\//";
$pattern2 = "/\/.*/";
$url = preg_replace($pattern1, '', $url);
$url = preg_replace($pattern2, '', $url);
echo $url;

产量

want-to-keep-35

您还可以传递一组模式,然后按顺序评估它们

$url = "https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn";
$patterns = array("/https?\:\/\/[^\/]+\//", "/\/.*/");
$url = preg_replace($patterns, '', $url);
echo $url;

答案 2 :(得分:0)

试试这个

<?php

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn';

$parsedURL = parse_url($url);
echo "<pre>";
var_dump(parse_url($url));
echo "</pre>";


$result = trim($parsedURL['path'], '/');
echo $result;

答案 3 :(得分:0)

如果你知道域名,只有,为什么不简单地使用:

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn';
$keep = explode("https://www.domain.com/", $url);
$keep2 = explode("/", $keep[0]);

$ keep [0]将包含'want-to-keep-35 /?idku = rbxbbgh3dKqn'

$ keep2 [0]将包含'want-to-keep-35'