Нужна помощь удалить часть из URL

1

Мне нужно получить часть от 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);

но не работает. дайте мне знать, может ли кто-нибудь здесь помочь мне и спасибо

  • 0
    Почему бы не Zoid ^ H ^ H ^ H parse_url ? (И preg_replace() , кстати, не обновляет переданную переменную, она возвращает измененную строку.)
  • 0
    «Я только эту часть ...» Я в замешательстве, вы хотите удалить эту часть или получить эту часть ?!
Теги:
url
preg-match
preg-replace

4 ответа

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
  • 0
    Итак, я понимаю все остальное, но что здесь делает # ? Или конкретнее, чем он отличается от /pattern/ ? Я подозреваю, что это просто разделитель, и вы можете указать любой разделитель, который вы хотите.
  • 0
    @BrianCohan Конечно, # это милый, маленький и безвредный разделитель :)
Показать ещё 4 комментария
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;
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;
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'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню