هل يمكن لأي شخص أن يشرح كود PHP هذا باستخدام json_encode وjson_decode؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

هذه المخرجات:

{"tag":"<b><\/b>"}

عندما تعتقد أنه سيخرج المدخلات بالضبط.لسبب ما يضيف json_encode شرطة مائلة إضافية.

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

المحلول

لأنه جزء من معيار JSON

http://json.org/

شار

any-Unicode-character-
    except-"-or-\-or-
    control-character
\"
\\
\/ <---- see here?
\b
\f
\n
\r
\t
\u four-hex-digits

نصائح أخرى

استخدم هذا:

echo json_encode($a,JSON_HEX_TAG)

ستكون النتيجة:

["\u003C\u003E"]

يمكنك قراءة هذه المقالة لتحسين معرفتك بـ JSON_ENCODEhttp://php.net/manual/en/function.json-encode.php

ربما تكون هذه ميزة أمنية.النسخة الهاربة (على سبيل المثال.الناتج) سيتم تحليله على أنه مشابه للإصدار الذي لم يتم الهروب منه، بواسطة Javascript (على سبيل المثال. \/ يصبح /).بعد الهروب من الشرطة المائلة بهذه الطريقة، هناك فرصة أقل لأن يسيء المتصفح تفسير سلسلة جافا سكريبت على أنها HTML.بالطبع، إذا تعاملت مع البيانات بشكل صحيح، فلن تكون هناك حاجة لذلك، لذا فهو بمثابة ضمان ضد مبرمج جاهل يفسد الأمور بنفسه.

إدخالك ليس JSON صالحًا، لكن محلل JSON الخاص بـ PHP (مثل معظم محللي JSON) سيقوم بتحليله على أي حال.

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