ampersand في نهاية السلسلة غير مرئية في المتصفح

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

  •  13-09-2019
  •  | 
  •  

سؤال

أنا طباعة سلسلة على النحو التالي

شفرة:

echo "&words=".$rs['pw']."&"; 

انتاج:

وكلمات = مساعدة | جيد

لاحظ أن الأخير & غير مطبوعة.

ولكن عندما أضيف شخصية الفضاء بعد & ثم يتم طباعتها على النحو التالي

شفرة:

echo "&words=".$rs['pw']."& "; 

انتاج:

وكلمات = مساعدة | حسن

الآن & مطبوعة.

لماذا يحدث وما سبب هذا السلوك؟

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

المحلول

إذا كنت إخراجها إلى متصفح ويب يجب أن تهرب من & باستخدام &amp; "&" في HTML يستخدم الكثير للهروب من السلاسل، وفي عنوان URL هو سحر خاص، مثل <> إلخ.

نصائح أخرى

إذا كنت إخراجها في صفحة ويب، فسوف يفسر المتصفح & مميز. حدد في "عرض المصدر" في متصفحك، وسترى الإخراج الخام. إذا كنت بحاجة إلى الظهور في سياق HTML، فسيتعين عليك تمرير السلسلة من خلال htmlspecialchars قبل طباعة ذلك. لذا:

$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");

هذا الرمز يعمل بالنسبة لي

$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";

انتاج |

وكلمات = مساعدة | حسن

مما يدفعني إلى سؤال: ما هو السياق؟ أين هو إخراج رمز هذا، هل تقوم بتشغيله على خادم الويب والعرض في متصفح؟ لا يوجد رمز آخر مشارك يمكن أن يسبب هذا؟

إذا كان السياق هو شيء مثل الإخراج في HTML، فأنت بحاجة إلى التأكد من أنه في المكان المناسب. في HTML أمبيرساند مميز ويجب عليك الهروب منه. عادة وهذا يعني ترجمة إلى &amp;

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