Kullanıcıdan domain ismini yazmasını istiyorum. Yazdığının aynısını alıyorum yani aaa ise aaa , aaa.com ise aaa.com yani bir işlemden geçirmiyorum.
Benim öğrenmek istediğim kullanıcı domainin sonuna com,net gibi domain uzantısı yazdı mı yazmadı mı?
Bunun regex ile yapılabileceğini okudum fakat yapmayı başaramadım. Yardımcı olanlara şimdiden teşekkürler.
Php ile regex kullanımı
8
●526
- 04-03-2014, 11:44:59Kimlik doğrulama veya yönetimden onay bekliyor.@Karaman; şöyle bi' şey işine yarar mı?
<?php $input = "saintx.net"; # Kendinize göre düzenleyin. $parts = explode(".", trim($input)); $part_count = count($parts); if($parts[0] == "www" && $part_count >= 3) { unset($parts[0]); $parts = array_values($parts); $part_count = count($parts); } if($parts_count == 2) { // Doğru bi' giriş yapılmış $tlds = array( "com", "net", "org" ); if(in_array($parts[1], $tlds)) { echo "işlem tamam. #1"; } } else if($parts_count == 3) { // com.tr co.uk gibi domainler için. $tlds = array( "com.tr", "gov.tr", "edu.tr" ); if(in_array($parts[1].".".$parts[2], $tlds)) { echo "işlem tamam. #2"; } } else { // hatalı bi' giriş yapılmış echo "hatalı giriş"; } - 04-03-2014, 11:54:18saintx adlı üyeden alıntı: mesajı görüntüle
İlginiz için teşekkür ederim hocam fakat yanlış sonuç döndürüyor. Ben aslında http , www yazıp yazmadığını önemsemiyorum .com , .eu , .guru yazmış mı yazmamış mı o önemli benim için
- 04-03-2014, 11:57:32@Karaman; gözümden kaçan ufak bi' hata varmış
şu şekilde deneyebilir misin?
<?php $input = "saintx.net"; # Kendinize göre düzenleyin. $parts = explode(".", trim($input)); $part_count = count($parts); if($parts[0] == "www" && $part_count >= 3) { unset($parts[0]); $parts = array_values($parts); $part_count = count($parts); } if($part_count == 2) { // Doğru bi' giriş yapılmış $tlds = array( "com", "net", "org" ); if(in_array($parts[1], $tlds)) { echo "işlem tamam. #1"; } } else if($part_count == 3) { // com.tr co.uk gibi domainler için. $tlds = array( "com.tr", "gov.tr", "edu.tr" ); if(in_array($parts[1].".".$parts[2], $tlds)) { echo "işlem tamam. #2"; } } else { // hatalı bi' giriş yapılmış echo "hatalı giriş"; } - 04-03-2014, 12:11:33Hocam teşekkür ederim, çalışıyor. Fakat domain uzantılarını tek tek elle girdiğimizden ve her gün de yeni domainler eklendiğinden sisteme tam güvenemiyorumsaintx adlı üyeden alıntı: mesajı görüntüle
- 04-03-2014, 12:16:03Zahmet etmeyin hocam ben araştırırım.saintx adlı üyeden alıntı: mesajı görüntüle
- 04-03-2014, 12:26:50bu işi en kaliteli ve hatasız yapmak için hazır classlar kullanın aksi taktirde hatalar alabilirsiniz.
vaktim yo kama aklım gelen örnek
parse_url ilr önce tam domain nameyi alıp içinde "." arayın
varsa sayısını bulun
unutmayın com.tr gibi 2 noktaya sahip uzantılarda var.
bunun için ise 3 ve üzeri nokta varmı kontrol ettirin
eğer 3 ve üzerinde nokta varsaa ya ip adresi yada sub domainli isimdir.
fakat 2 veya 1 tane nokta varsa sağdan sola ilk noktadan bölüceksiniz.
bunun için ise preg match ile hem tek hemde çift nokta için 2 ayrı regex oluşturun.
sonuç olarak ilk noktadan sonrası domain uzantısı olacaktır.
eğer akşama unutmassam ve konu çöülmesse bu dediğim fonksiyonu yazıp paylaşırım
- 04-03-2014, 12:42:01@Karaman; şu örnekte işine yarayabilir.

Bilgisayarınızda veya sunucunuzda Composer kurulu değilse şu yazımı okumanızı tavsiye ediyorum.
composer.json;
{ "minimum-stability": "dev", "require": { "jeremykendall/php-domain-parser": "0.0.*" } }test.php;
<?php error_reporting(E_ALL); set_include_path(str_replace("\\", "/", dirname(realpath(__FILE__)))); date_default_timezone_set("Europe/Istanbul"); require("vendor/autoload.php"); use \Pdp\Parser; use \Pdp\PublicSuffixListManager; $pslManager = new PublicSuffixListManager(); $parser = new Parser($pslManager->getList()); $hosts = array("github.com", "www.path.com", "saintx.net", "turkiye.gov.tr", "google.com.tr", "ttnet.com.tr", "www.metu.edu.tr"); foreach($hosts as $host) { $suffix = $parser->parseHost($host)->publicSuffix; echo "{$host}: publicSuffix -> {$suffix} <br />"; }çıktı;