ampersand في نهاية السلسلة غير مرئية في المتصفح
سؤال
أنا طباعة سلسلة على النحو التالي
شفرة:
echo "&words=".$rs['pw']."&";
انتاج:
وكلمات = مساعدة | جيد
لاحظ أن الأخير &
غير مطبوعة.
ولكن عندما أضيف شخصية الفضاء بعد &
ثم يتم طباعتها على النحو التالي
شفرة:
echo "&words=".$rs['pw']."& ";
انتاج:
وكلمات = مساعدة | حسن
الآن &
مطبوعة.
لماذا يحدث وما سبب هذا السلوك؟
المحلول
إذا كنت إخراجها إلى متصفح ويب يجب أن تهرب من & باستخدام &
"&" في HTML يستخدم الكثير للهروب من السلاسل، وفي عنوان URL هو سحر خاص، مثل <> إلخ.
نصائح أخرى
إذا كنت إخراجها في صفحة ويب، فسوف يفسر المتصفح &
مميز. حدد في "عرض المصدر" في متصفحك، وسترى الإخراج الخام. إذا كنت بحاجة إلى الظهور في سياق HTML، فسيتعين عليك تمرير السلسلة من خلال htmlspecialchars
قبل طباعة ذلك. لذا:
$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");
هذا الرمز يعمل بالنسبة لي
$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";
انتاج |
وكلمات = مساعدة | حسن
مما يدفعني إلى سؤال: ما هو السياق؟ أين هو إخراج رمز هذا، هل تقوم بتشغيله على خادم الويب والعرض في متصفح؟ لا يوجد رمز آخر مشارك يمكن أن يسبب هذا؟
إذا كان السياق هو شيء مثل الإخراج في HTML، فأنت بحاجة إلى التأكد من أنه في المكان المناسب. في HTML أمبيرساند مميز ويجب عليك الهروب منه. عادة وهذا يعني ترجمة إلى &