اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

هنالك عدّة طرق للتأكد من رابط معين في روبي، على سبيل المثال استخدام وحدة URI الموجودة مع وحدات روبي القياسية وربطها مع جملة شرطية if  حتى تتمكن من القيام بأوامر معين عند تحقق الشرط (صحة الرابط) كما في المثال التالي:

require 'uri'

if url =~ URI::regexp
    # Correct URL
end

كما يمكنك استخدام وحدة addressable والتي أجدها أذكى في التعامل مع الروابط عن طريق إنشاء دالة كما في المثال التالي:

require 'addressable/uri'

SCHEMES = %w(http https)

def valid_url?(url)
  parsed = Addressable::URI.parse(url) or return false
  SCHEMES.include?(parsed.scheme)
rescue Addressable::URI::InvalidURIError
  false
end

المصدر

  • 0
نشر

اعتقد أن استخدام التعابير المنتظمة في هذه الحالة سيعطيك دقة أكبر قليلاً:

URI::DEFAULT_PARSER.regexp[:ABS_URI]

سيؤدي ذلك إلى إلغاء عناوين URL التي تحتوي على مسافات، على عكس URI.regexp الذي يسمح بالمسافات.
إضافةً إلى ذلك، للتحقق مما إذا كانت السلسلة عبارة عن عنوان URL، استخدم:

url =~ /\A#{URI::regexp}\z/

إذا كنت تريد فقط التحقق من عناوين URL على الويب (http أو https) ، فاستخدم هذا:

url =~ /\A#{URI::regexp(['http', 'https'])}\z/

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...