لا يمكن الحصول على طريقة الفصل للعمل داخل foreach loop - PHP

StackOverflow https://stackoverflow.com/questions/1515099

  •  19-09-2019
  •  | 
  •  

سؤال

كتبت رابط الفصل الذي يحتوي على طريقة Shortolong () هذا يجب أن يرجع عنوان URL الحقيقي لعنوان URL المختصر عن طريق إرجاع رأس استجابة "الموقع". اختبرها ويعمل موافق هنا هو الرمز

public function shortTolong()
    {
        $urlMatch = array();
        $ch = curl_init();

        $options = array
        (
            CURLOPT_URL=>$this->getUrl(),
            CURLOPT_HEADER=>true,
            CURLOPT_RETURNTRANSFER=>true,
            CURLOPT_FOLLOWLOCATION=>false,
            CURLOPT_NOBODY=>true);
        curl_setopt_array($ch, $options);
        $server_output = curl_exec($ch);
        preg_match_all(LINK, $server_output,&$urlMatch,PREG_SET_ORDER);
        if($urlMatch)
        {
            foreach($urlMatch as $set)
            {
                $extracted_url = $set[2].'://'.$set[3];
            }
            return $extracted_url;
        }
        else
        {
            return $this->getUrl();
        }
    }

تبدأ المشكلة عندما أحاول استخدام هذه الطريقة على ملف آخر يستخدم FeedParser للحصول على إدخالات Feed التي تحتوي على هذه العناوين URL القصيرة التي أقيمت لتحليلها من سبب ما أحصل عليه نتيجة لعنوان URL القصير بدلا من فترة طويلة هنا هو الرمز:

foreach($parser->getItems() as $item)
{
    $idpreg = '/\d+/';
    preg_match_all($idpreg, $item['ID'],$statusid);
    $retweetid = ($statusid[0][1]);
    $datetime = $item['PUBLISHED'];
    $user = $item['AUTHOR']['NAME'];
    preg_match_all(LINK, $item['TITLE'], &$linkMatch);
    $final = $linkMatch[0][0];
    //if($linkMatch[0][0])
        echo '<p>';
        $link = new Link($final);
        echo $link->getUrl();
        echo '<br>';
        echo $link->shortTolong();
        echo '<br>';
        echo $user;
        echo '<br>';
        echo $retweetid;
        echo '</p>';


}

من بعض الأسباب، أحصل على نفس النتيجة للحصول على GetURL () و ShortTolong () وأنا أعلم أنه من المؤكد أن هذا خطأ.

أي أفكار لماذا يحدث هذا؟ شكرا

تحرير - أضفت إشعار خطأ إلى الطريقة مع curl_eror أحصل على رسالة الخطأ هذه: "البروتوكول http غير معتمد أو المعوقين في libcurl" كما قلت أنني اختبرت هذه الطريقة من وانت تعمل بشكل جيد كما هو الحال في نفس البيئة ( لا توجد تغييرات) أظن أنه لديه علاقة مع FeedParser باستخدام Curl TOO ....

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

المحلول

أعتقد أنك يجب أن تقليم () عنوان URL وهذا يجب أن يحل المشكلة.

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