سؤال

أنا أكون com.simplephpdom تستخدم للحصول على a قيم روابط href مع هذا الرمز:

$html = file_get_html($url);
foreach($html->find('a') as $element) $array[] = $element->href . '<br>'; 

المشكلة الآن هي أنه إذا كان الرابط يبدأ بالشرطة المائلة (/) فسيكون الرابط غير صالح!

كيف يمكنني الحصول على روابط صالحة؟

على سبيل المثال الرابط كالتالي :

<a href="/news45454.html">Test link</a>

إذا استخدمت كود phpsimpledom، فسوف أحصل على:

/news45454.html

لكن أريد أن يكون لدي:

http://example.com/news45454.html

كيفية الحصول على هذا؟

هل يمكننا الاختبار، إذا كان الرابط يبدأ بشرطة مائلة، ثم نضيف إليه رابط الموقع؟!كيف ؟

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

المحلول

تحتاج في الأساس إلى اختبار ما إذا كان عنصر HREF هو عنوان URL كامل صالح.إذا تم التحقق من الصحة، يمكنك المضي قدمًا وإضافته إلى المصفوفة.ومع ذلك، إذا فشل التحقق من الصحة، فستحتاج إلى ربط الاسم الأساسي (الذي يجب أن يكون مجال موقع الويب).

$html = file_get_html($url);
foreach($html->find('a') as $element) {
    if(filter_var($url, FILTER_VALIDATE_URL)) {
        // Valid URL, add to array.
        $array[] = $element->href . '<br>'; 
    } else {
        // URL is invalid, add basename.
        $array[] = basename($url) . $element->href . '<br>';
    }
}

قد يحتاج هذا إلى القليل من التغيير والتبديل في الحالات الأخرى (مثل <a href="#">) ولكن يجب أن يعمل مع الموقف الذي حددته.

نصائح أخرى

لحذف سطور استخدام:

giveacodicetagpre.

شاهد أيضا دليل PHP: Streamcslashes

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top