Мне нужно получить часть от url, я знаю много учебников на этом сайте, но я все еще не могу это получить...
этот образец URL:
https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn
Мне нужна эта часть только из этого URL-адреса, без домена, косой черты и конца
want-to-keep-35
уже попробуйте этот код:
preg_replace('|https?://www\.[a-z\.0-9]+|i', '', $serp);
но не работает. дайте мне знать, может ли кто-нибудь здесь помочь мне и спасибо
Если это так просто, вы можете использовать следующий простой подход, чтобы получить то, что вы хотите:
$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
#
? Или конкретнее, чем он отличается от /pattern/
? Я подозреваю, что это просто разделитель, и вы можете указать любой разделитель, который вы хотите.
#
это милый, маленький и безвредный разделитель :)
Попробуй это
<?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;
Если вы используете два шаблона и запускаете их последовательно, вы сможете устранить первую часть, а затем вторую часть.
шаблон 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;
Только если вы знаете доменное имя, почему бы просто не использовать:
$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'
parse_url
? (Иpreg_replace()
, кстати, не обновляет переданную переменную, она возвращает измененную строку.)