سؤال

لقد كنت أبحث حولي عن تعبير regex الذي سوف يبصق فقط الجزء "stackoverflow" وليس www. أو .com إلخ. كل ما يمكنني العثور عليه هو التحقق مما إذا كان عنوان URL صالحًا ... لقد استخدمت مرشح URL الخاص بـ PHP لتحديد هذا الأمر كثيرًا الآن أتطلع إلى تحديد الموقع.

لم أكتب أبدًا تعبيرًا من قبل ، لذا آمل أن يتمكن شخص ما من التحقق منه/يوصي بحل أفضل.

preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)

تحرير: كل عناوين URL التي أتعامل معها هي .com إذا كان ذلك يساعد

هل كانت مفيدة؟

المحلول

خط واحد دون استخدام تعبيرات منتظمة !!!

$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;

نصائح أخرى

هل فكرت في PHP parse_url () وظيفة؟

إذا كنت تعلم أن الشيء الذي لديك هو عنوان URL ونهاية المجال في .com شيء بسيط مثل

preg_match('#([^\.]*)\.com#', $url, $matches);

يجب أن تفعل الخدعة.

في حين أن هذا سوف يفشل في مجال مثل www.com.foo.com ولكن قد يكون كافيا ، اعتمادا على وضعك.

preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top