سؤال

لقد تعالى مع سؤال قد ساعدت للتو - مشكلة جديدة ولكن فقط قليلا فقط.

لدي هذا preg_match للحصول على محتويات href. من فضلك لا تقل لي عدم استخدام Regex - أنا أدرك استخدام المحللين / الفصول الدراسية الأخرى وغيرها ولكن هذا سيناريو قديم يحتاج فقط إلى إصلاحه الآن. :) لا وقت لإعادة يكتب!

preg_match("~<a target=\'_blank\' rel=\'nofollow\' href=\"(.*?)\">~i", $epilink, $epiurl);

يعود:

http://www.example.com/frame2.php?view=&epi=54673-r

ومع ذلك، يجب أن يعود:

http://www.example.com/frame2.php?view=168204&epi=54673

هذا مثال على HTML ستعمل مع:

<a target='_blank' rel='nofollow' href="http://www.example.com/frame2.php?view=545903&epi=54683">

لماذا عنوان URL الذي عدت إليه مشوه؟

شكرا جميعا على أي مساعدة.

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

المحلول

$string="<a target='_blank' rel='nofollow' href=\"http://www.example.com/frame2.php?view=545903&epi=54683\">";
$s = explode('">',$string);
foreach($s as $k){
   if (strpos($k,"href")!==FALSE){
        echo preg_replace('/.*href="|/ms',"",$k);
        break;
   }
}

انتاج

$ php test.php
http://www.example.com/frame2.php?view=545903&epi=54683

نصائح أخرى

هذا يجب أن يعمل:

$epilink = "<a target='_blank' rel='nofollow' href=\"http://www.example.com/frame2.php؟view=545903&epi=54683.\">";
preg_match("/<a target='_blank' rel='nofollow' href=\"(.*?)\">/i", $epilink, $epiurl);

print_r ($ EPIURL)؛

تستطيع ايضا استخذام preg_match_all.

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