Чтобы изменить имя пакета для приложения Xamarin, вам необходимо вручную изменить имя пакета, перейдя в AndroidManifest.xml
и изменив атрибут пакета.
Файл AndroidManifest.xml
доступен в разделе
[Solution Name]>[App Name]>Properties>AndroidManifest.xml in your solution explorer.
. Затем приложение необходимо будет перестроить, чтобы изменение имени пакета вступило в силу.
Как насчет чего-то как этот?
function getDomain($url) {
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}
Извлечет доменное имя с помощью классика parse_url
и затем ищите допустимый домен без любого субдомена (www быть субдоменом). Не будет работать над вещами как 'localhost'. Возвратит false, если он ничему не соответствовал.
//Редактирование:
Испытайте его с:
echo getDomain('http://www.google.com/test.html') . '<br/>';
echo getDomain('https://news.google.co.uk/?id=12345') . '<br/>';
echo getDomain('http://my.subdomain.google.com/directory1/page.php?id=abc') . '<br/>';
echo getDomain('https://testing.multiple.subdomain.google.co.uk/') . '<br/>';
echo getDomain('http://nothingelsethan.com') . '<br/>';
И это должно возвратиться:
google.com
google.co.uk
google.com
google.co.uk
nothingelsethan.com
Конечно, это ничего не возвратит, если это не пройдет parse_url
, поэтому удостоверьтесь, что это - правильно построенный URL.
//Приложение:
Alnitak является правильным. Решение, представленное выше, будет работать в большинстве случаев, но не обязательно все и должно сохраняться, чтобы удостовериться, например, что их не новый TLD с .morethan6characters и так далее. Единственный надежный способ извлечь домен состоит в том, чтобы использовать ведомый список, такой как http://publicsuffix.org/. Это более болезненно сначала, но легче и более устойчиво на долгосрочном. Необходимо удостовериться, что Вы понимаете за и против каждого метода и как он соответствует Вашему проекту.
В настоящее время единственный "правильный" способ сделать это должно использовать список, такой как сохраняемый по http://publicsuffix.org/
BTW, этим вопросом является также в значительной степени дубликат:
Существуют работы по стандартизации при рассмотрении IETF методов DNS объявления, используется ли конкретный узел в дереве DNS для "общедоступной" регистрации, но они находятся на своих ранних стадиях развития. Все популярные браузеры неIE используют список publicsuffix.org.
Вскопанный это из связанного сообщения, для идеи сохранить таблицу: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/src/effective_tld_names.dat?raw=1
Я не сделал бы этого все же.
Конечно, это зависит от Вашего определенного варианта использования, но вообще говоря, я не использовал бы поиск по таблице для TLDs. Новые TLDs выходят, и Вы обычно не хотите поддерживать их где угодно. Просто спросите меня, как часто мой firstname@lastname.name был отклонен из-за близорукости.
Я предполагаю, что мог помочь лучше, если бы я знал, почему Вы не хотите www? Вам нужен он для электронных писем? Можно запросить для записей MX в таких случаях, чтобы проверить, что это (в конечном счете) принимает письма.
Можно также найти, что справка с функциями PHP, имеющими дело с записями DNS, узнает больше информации о них, видит http://php.net/dns_get_record, например.
Существует действительно легкое решение этого:
function get_domain($url) {
$pieces = parse_url($url);
return array_pop(explode('.', $pieces['host'], 2));
}
Конечно, это будет работать?
Просто доказательство, принимая позволенный tlds запоминается в хеш. Код может быть сокращен много.
<?php
$urlCompoments=parse_url($theUrl);
$chunk=explode('.',$urlComponents['host']);
$tldIndex = count($chunk-1); // assume last chunk is tld
$maxTldLen = 2; // assuming a tld can be in the form .com or .co.uk
$cursor=1;
$found=false;
while(($cursor<=$maxTldLen) or $found) {
$tls = implode('.',array_slice($chunk, -$cursor));
$found=isset($tldSuffixesAllowed[$tld]);
$cursor++;
}
if ($found){
$tld=implode('.',array_slice($chunk, -$cursor));
} else {
// domain not recognized, do wathever you want
}
?>