سؤال

لقد اكتشفت أن لا تفعل ما يلي:

echo '<a href="http://" title="bla">huzzah</a>';

أنا في نهاية المطاف مع التالية نقلهم إلى المتصفح:

<a href="http:///" title="bla">huzzah</a>

هذا هو مزعج بشكل خاص عندما الرابط إلى ملف مع ملحق ، كما أنه يكسر الرابط.

أي أفكار لماذا يحدث هذا وكيف يمكن إصلاح ذلك ؟

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

function print_it($item) {
    echo '<div class="listItem clearfix">';
    echo '<div class="info">';
    echo '<span class="title">';
    if(isset($item[6])) {
        echo '<a href="http://" title="">' . 'me' . '</a>';
    }
    echo '</span>';
echo '</div></div>';
}

تحديث: في استجابة مات ، لصق في الخط الخاص بك وجعل من نفسه.

تحديث: وردا على النار لانسر, لقد وضعت مرة أخرى في بلدي الأصلي محاولة وسوف تظهر لك كل أدناه.

echo substr($item[6],13) . '<br>';
echo '<a href="http://' . substr($item[6],13) . '" title="' . $item[0] . '">' . $item[0] . '</a>';

<span class="title">www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html<br>
<a href="http://www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html" title="Employment Ontario">Employment Ontario</a></span>

سبب substr يعود ويرجع ذلك إلى URL التي يتم تشغيلها من خلال rawurlencode() في أماكن أخرى ، وربط http%3A%2F%2F يجعل الصفحة أعتقد أنها المحلية/ارتباط نسبي.

تحديث: أنا لصق الرد السابق دون النظر حقا في ذلك.لذا HTML هو الصحيح عند عرض مصدر الصفحة الفعلية يفسر ذلك مع آخر مائل زائدة بعد ذلك.

الحل: كل هذا كان نتيجة rawlurlencode().إن فك الشفرة أو تخطي ترميز كل ذلك معا, كل شيء يعمل تماما.شيئا عن rawurlencode() يجعل المتصفح تريد التمسك مائل زائدة في هناك.

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

المحلول

فايرفوكس, خاصة, يظهر لك مصدر html الطريقة التي يراها والتي نادرا ما الطريقة التي كنت أرسلها.بوضوح شيئا عن الرابط الخاص بك أو السياق هو جعل المتصفح تفسير مائل زائدة.

أنا أتساءل عما إذا كان تأثير جانبي من ترميز url.إذا كنت rawurldecode أنها سوف تساعد.إذا كان هناك أجزاء من عناوين url التي تحتاج إلى البقاء المشفرة يمكنك البحث عن مائلة فقط ضع تلك العودة.

نصائح أخرى

إيف لم يكن ذلك كيف ecactly أنت مرددا الرابط ؟ التالية يجب أن تعمل.

echo '<a href="http://someothersite.com">Link</a>';
echo '<a href="anotherpage.php">Some page</a>';
echo '<a href="../pageinparentdir.php">Another page</a>';
etc

تحرير, حيث يمكنك إضافة معلومات.

لا يمكنك فقط http:// كما href حتى تدخل هذا الرابط مباشرة في صفحة html هذا التأثير.على سبيل المثال:
html:

 <a href="http://" title="bla">huzzah</a>

رابط (في FF3):

http:///

الخطأ يجب أن يكون في مكان آخر. echo يكتب سلسلة حرفية.أي بعد انتهاء التجهيز يتم على أي جزء.إضافية مائل ولذلك أضاف في مكان آخر في التعليمات البرمجية الخاصة بك (قبل اجتياز سلسلة echo).

لا يمكنك الحصول على نفس النتيجة إذا كنت تستخدم علامات الاقتباس المزدوجة والهروب الداخلية علامات الاقتباس المزدوجة مثل هذا ؟

echo "<a href=\"http://\" title=\"bla\">huzzah</a>";

إذا أنا وضعت هذا الأمر صدى في كود PHP, فإنه إخراج "http://" كما هو متوقع (يمكنك أن ترى ذلك في مصدر من الإخراج التي تم إنشاؤها) ، ولكن عندما الماوس فوق الرابط في الصفحة الناتجة (مع IE7) ، فإنه يدل على http:///.

تخميني هو أن هذا المتصفح السلوك لأن لا يمكن أن يكون هناك http:// رابط بدون اسم المضيف أو عنوان IP (لا يمكنك فقط الوصول إلى البروتوكول).

كما أن بعض الرجال أشار, 'http://' غير صالح الرابط حتى المتصفح يضيف إضافية مائل في نهاية المطاف.لعرض من ذلك ، حاول الوشق -تفريغ http://yourdomain/yourfile.php (إذا كنت محظوظا بما فيه الكفاية لينكس) أو telnet من المربع الخاص بك إلى الخادم الخاص بك في المنفذ 80 و الكتابة هذه:

GET /path/file.php HTTP/1.0

و أنظر النتيجة.

هل نظرت في PHP التكوين الإعدادات ؟ قد يكون magic_quotes_gpc اتخاذ قرار الهروب الأشياء بالنسبة لك (لقد عضني عدة مرات قبل أن الإعداد ، خاصة عند العمل مع اياكس/سلمان المرور).حاول التأكد من أنها قبالة مرددا مرة أخرى (قد تحتاج إلى تحرير php الخاص بك.ini أو إضافة php_flag magic_quotes_gpc off إلى .ملف htaccess في الدليل كنت تعمل في ، اعتمادا على البيئة الخاصة بك).

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