سؤال

لدي Zend Framework URI مثل /controller/action/var1/value1/var2/value2 .

  1. تحتوي القيمة 2 على حرف مسافة فيه.كيف يمكنني ترميزه في PHP؟عندما أستخدم urlencode مع value2، يؤدي ذلك إلى تحويل المسافة إلى "+" بدلاً من "%20f".هل هذا جيد؟

  2. تتم إضافة هذه القيمة 2 أيضًا إلى موقع href بواسطة جافا سكريبت من جانب العميل.أنا أستخدم وظيفة الهروب هناك ولكن عندما أنقر على الرابط لا أرى "+" أو "%20f" في شريط عناوين فايرفوكس.على الرغم من أنني عندما أراها في علامة التبويب "net" الخاصة بـ firebug، أرى %20f.

ما هي الوظائف التي يجب أن أستخدمها في PHP وجافا سكريبت؟

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

المحلول

بالنسبة لسؤالك الأول، هذا هو الفرق بين urlencode و rawurlencode :

var_dump(urlencode("hello, world"));

سوف تحصل :

string 'hello%2C+world' (length=14)

بينما

var_dump(rawurlencode("hello, world"));

سوف تحصل :

string 'hello%2C%20world' (length=16)

أعتقد أن كلا الأمرين يجب أن يكونا على ما يرام؛ولكن لا تتردد في تجربتها، فقط في حالة؛-)


بخصوص النقطة الثانية :يحاول Firefox جعل عناوين URL "أجمل"، وعرضها بطريقة يمكن قراءتها بواسطة الإنسان، بدلاً من تشفيرها - وهو أمر سيئ بالنسبة لنا كمطورين، ولكنه لطيف للمستخدمين النهائيين.

على سبيل المثال، إذا كتبت عنوان URL هذا في شريط عناوين Firefox:

http://tests/temp/temp.php?a=hello%2C%20world

عندما أضغط على يدخل المفتاح، تتم ترجمته تلقائيًا إلى

http://tests/temp/temp.php?a=hello%2C%20world

إذا كان يعمل بالطريقة التي تعمل بها (وبما أنك ترى عنوان URL مشفرًا باستخدام Firebug، فمن المحتمل أنه يعمل), ، كل شيء على ما يرام ؛-)

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