8

http://と の間に現れるものを取り除く方法を教えてもらえますか/? たとえば、http://something/または単に?http://something.something.something/に変わります。/

4

7 に答える 7

12

URLを含む長い文字列ではなく、URLを使用していると仮定します...

$path = parse_url($url, PHP_URL_PATH);
于 2012-11-22T01:09:43.450 に答える
8

を使用することもできますparse_urlが、別のコンポーネントを使用して残りの URL を再構築する必要があります。

$components = parse_url($url);
$result = $components['path'] . '?' .
          $components['query'] . '#' .
          $components['fragment'];
于 2012-11-22T01:09:18.940 に答える
2
$url = "http://php.net/manual/en/function.parse-url.php?arg=value#anchor";

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

上記の例では、次のように出力されます。

Array
(
    [scheme] => http
    [host] => php.net
    [path] => /manual/en/function.parse-url.php
    [query] => arg=value
    [fragment] => anchor
)

を参照してくださいparse-url

PHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_PORT、PHP_URL_USER、PHP_URL_PASS、PHP_URL_PATH、PHP_URL_QUERY、または PHP_URL_FRAGMENT のいずれかを指定して、特定の URL コンポーネントのみを文字列として取得します (ただし、PHP_URL_PORT が指定されている場合は、戻り値は整数になります)。

于 2014-03-18T20:37:10.037 に答える
2

以下は単に URL のパスを返します。

<?php

$urls = array(
    'http://something.com/',
    'http://something.something.com/',
    'http://something.something.com/some/path',
    'http://something.something.com/some/path/?query=string',
    'http://something.something.com/some/path/?query=string#with-fragment',
);

foreach ($urls as $url) {
    var_dump(parse_url($url, PHP_URL_PATH));
}

#=> string(1) "/"
#=> string(1) "/"
#=> string(10) "/some/path"
#=> string(11) "/some/path/"
#=> string(11) "/some/path/"

URL スキームとホストを URL から取り除きたいだけで、クエリとフラグメントを保持したい場合は、次のように使用できます。

foreach ($urls as $url) {
    $url = parse_url($url);
    $ret = $url['path'];
    if ($url['query']) $ret .= "?{$url[query]}";
    if ($url['fragment']) $ret .= "#{$url[fragment]}";
    var_dump($ret);
}

#=> string(1) "/"
#=> string(1) "/"
#=> string(10) "/some/path"
#=> string(24) "/some/path/?query=string"
#=> string(38) "/some/path/?query=string#with-fragment"

さらに良いことに、PECL HTTP Extensionを使用している場合は、 http_build_url()メソッドを使用できます。

foreach ($urls as $url) {
    $url = http_build_url(array_key_intersect(
        parse_url($url),
        array_flip(array('path', 'query', 'fragment'))
    ));
    var_dump($url);
}

#=> string(1) "/"
#=> string(1) "/"
#=> string(10) "/some/path"
#=> string(24) "/some/path/?query=string"
#=> string(38) "/some/path/?query=string#with-fragment"
于 2012-11-22T01:31:06.460 に答える
0
$url = "www.domain.com/sds?test=1&test2=2&test3=3";
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $query_array);

「?」の前は何でも構いません。出力します

array {
 'test' => string '1' (length=1)
 'test2' => string '2' (length=1)
 'test3' => string '3' (length=1)
}
于 2013-02-02T23:21:12.850 に答える
0

あなたが望むのは$_SERVER['REQUEST_URI']. または、あなたはそれを得ることができますparse_url()

または、正規表現の使用を主張する場合は、[編集]しないでください。

于 2012-11-22T01:07:56.380 に答える