المصادر الشائعة للسلسلة الحرفية غير المنتهية [مكررة]

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

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

أحاول تصحيح أخطاء برنامج JavaScript النصي الذي تتم قراءته في ملحق Firefox وتنفيذه.لا يمكنني رؤية الأخطاء إلا عبر وحدة تحكم Firebug (الرمز الخاص بي غير مرئي لـ Firebug)، ويتم الإبلاغ عن "سلسلة حرفية غير منتهية".

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

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

المحلول

يبدو أن معظم المتصفحات تواجه مشكلات في التعليمات البرمجية مثل هذا:

var foo = "</script>";

في Firefox وOpera وIE8، يؤدي هذا إلى حدوث خطأ حرفي في السلسلة غير منتهية.يمكن أن يكون سيئًا جدًا عند إجراء تسلسل كود html الذي يتضمن نصوصًا برمجية.

نصائح أخرى

ابحث عن فواصل الأسطر!هؤلاء هم السبب في كثير من الأحيان.

سأصوت لإجابة Jamtoday إذا كان لدي "السمعة"

إذا كانت بياناتك تأتي عن طريق PHP، فقد يكون ذلك مفيدًا

$str = str_replace(array("\r", "\n"), '', $str);

لقد اكتشفت ذلك للتو "<\/script>" يبدو أنه يعمل كذلك "</scr"+"ipt>".

قد تحاول تشغيل البرنامج النصي من خلال JSLint.

ما عليك سوى الهروب من عمليات إغلاق علامتك أو استخدام رمز ascii

أي

<\/script>

أي

<&#47;script>

إذا قمت بأي قص/لصق:ستؤدي بعض أدوات تمييز بناء الجملة عبر الإنترنت إلى تشويش علامات الاقتباس المفردة والمزدوجة، وتحويلها إلى أزواج اقتباس منسقة (أزواج افتتاحية وختامية متطابقة).(رغم أنني لا أستطيع العثور على أي أمثلة الآن) ...وهذا يستلزم الضغط على Command-+ عدة مرات والتحديق في أحرف الاقتباس الخاصة بك

حاول أ خط مختلف؟ أيضًا، يستخدم المحررون وبيئات التطوير المتكاملة (IDEs) المختلفة رموزًا مميزة وقواعد تمييز مختلفة، وتعد لغة JS واحدة من أكثر اللغات الديناميكية التي يمكن تحليلها، لذا حاول فتح الملف في emacs وvim وgedit (مع مكونات JS الإضافية)...إذا كنت محظوظًا، فسوف يُظهر أحدهم سلسلة أرجوانية طويلة تمر عبر نهاية الملف.

ابحث عن سلسلة تحتوي على عرض أسعار فردي غير قابل للإلغاء والذي يمكن إدراجه بواسطة بعض التعليمات البرمجية من جانب الخادم.

هل هربت من الخطوط المائلة للأمام ( / )؟لقد واجهت مشكلة مع هؤلاء من قبل

هل جربت Chromebug؟إنه Firebug للإضافات.

لقد واجهت مشكلة مع علامات الاقتباس ذات الزاوية في الماضي ( ' ) عادةً بسبب النسخ واللصق من Word.يؤدي استبدالها بعلامات اقتباس مفردة عادية ( ' ) إلى حل المشكلة.

ضع في اعتبارك أيضًا أن %0A هو عنوان URL المشفر لحرف تغذية الأسطر.لقد استغرق الأمر مني بعض الوقت للعثور على مكان وجود سطر في الكود المخالف الخاص بي.

إذا لم يكن هناك شيء يساعد، فابحث عن بعض الأحرف أحادية الكود مثل

\u2028

قد يؤدي هذا إلى قطع السلسلة الخاصة بك على أكثر من سطر واحد وإلقاء هذا الخطأ

ربما يرجع السبب في ذلك إلى وجود فاصل أسطر في كود PHP الخاص بك.إذا كنت بحاجة إلى فواصل الأسطر في رسالة نافذة التنبيه الخاصة بك، فقم بتضمينها كصيغة تخطي في نهاية كل سطر في كود PHP الخاص بك.عادةً ما أفعل ذلك بالطريقة التالية:

$message = 'line 1.\\n';
$message .= 'line 2.';

جرب "البحث الثنائي".احذف نصف الرمز وحاول مرة أخرى.إذا كان الخطأ لا يزال موجودا، فاحذف نصف الكود المتبقي.إذا لم يكن الخطأ موجودًا، فأعد ما قمت بحذفه مرة أخرى، واحذف نصف ذلك.يكرر.

يجب أن تكون قادرًا على تضييق نطاقه إلى بضعة أسطر بسرعة إلى حد ما.تجربتي هي أنه في هذه المرحلة، ستلاحظ وجود سلسلة غبية مشوهة.

قد يكون من المناسب إجراء ذلك على نسخة محفوظة من مخرجات HTML إلى المتصفح، إذا لم تكن متأكدًا من المورد الموجود على جانب الخادم الذي يوجد به الخطأ.

لقد أخطأ مطور صفحة الويب في تحديد التشفير الذي يستخدمه متصفح المشاهد.يمكن عادةً حل هذه المشكلة عن طريق تحديد ترميز في رأس الصفحة.

قم بمسح الرمز الذي يأتي قبل السطر # المذكور برسالة الخطأ.أيًا كان ما لم يتم إنهاؤه فقد أدى إلى وضع علامة على شيء ما في اتجاه مجرى النهر (الخط المُلام عليه#).

المسافة البيضاء هي مشكلة أخرى أجدها تسبب هذا الخطأ.قد يساعد استخدام وظيفة لتقليص المسافة البيضاء.

$str = str_replace(array(" "، "، "، " ")، '
', stripslashes($str));

هذا يجب أن يعمل.

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