Zend Framework ترميز مساحة URI في PHP وJavascript
-
21-09-2019 - |
سؤال
لدي Zend Framework URI مثل /controller/action/var1/value1/var2/value2 .
تحتوي القيمة 2 على حرف مسافة فيه.كيف يمكنني ترميزه في PHP؟عندما أستخدم urlencode مع value2، يؤدي ذلك إلى تحويل المسافة إلى "+" بدلاً من "%20f".هل هذا جيد؟
تتم إضافة هذه القيمة 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، فمن المحتمل أنه يعمل), ، كل شيء على ما يرام ؛-)