Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
parse_url превращает URL в ассоциативный массив:
php > $foo = "http://www.example.com/foo/bar?hat=bowler&accessory=cane";
php > $blah = parse_url($foo);
php > print_r($blah);
Array
(
[scheme] => http
[host] => www.example.com
[path] => /foo/bar
[query] => hat=bowler&accessory=cane
)
Можно использовать parse_url () , чтобы сделать это:
$url = 'http://www.example.com';
$domain = parse_url($url, PHP_URL_HOST);
$domain = str_replace('www.','',$domain);
В этом примере, $domain должен содержать example.com, независимо от него имеющий www или нет. Это также работает на домен, такой как .co.uk
Можно также записать регулярное выражение для получения точно, что Вы хотите.
Вот моя попытка его:
$pattern = '/\w+\..{2,3}(?:\..{2,3})?(?:$|(?=\/))/i';
$url = 'http://www.example.com/foo/bar?hat=bowler&accessory=cane';
if (preg_match($pattern, $url, $matches) === 1) {
echo $matches[0];
}
вывод:
example.com
Этот шаблон также учитывает домены, такие как 'example.com.au'.
Примечание: Я не консультировался с соответствующим RFC.
Я некоторое время размышлял о том, имеет ли смысл использовать для этого регулярное выражение, но, в конце концов, думаю, что нет. Регулярное выражение
firstresponder было близко к тому, чтобы убедить меня, что это лучший способ, но оно не сработало ни с чем без косой черты в конце (например, http://example.com ). Я исправил это следующим образом: '/ \ w + \ .. {2,3} (?: \ .. {2,3})? (? = [\ / \ W]) / i'
, но потом я понял, что дважды соответствует URL-адресам вроде ' http://example.com/index.htm '. Ой. Это было бы не так уж плохо (просто используйте первый), но он также соответствует дважды примерно так: ' http://abc.ed.fg.hij.kl.mn/ ', и первый матч не тот. : (
Сотрудник предложил просто получить хост (через parse_url ()
), а затем просто взять последние два или три бита массива ( split ()
на ' . ') Два или три будут основаны на списке доменов, например' co.uk 'и т. Д. Составление этого списка становится сложной частью.