PDA

View Full Version : مشکل با فاصله ها در کدها



mbf5923
جمعه 07 بهمن 1390, 19:13 عصر
سلام
دوستان یه مشکل عجیب برای من به وجود اومده میخواستم ببینم کسی قبلا چنین مشکلی داشته و یا کسی میدونه چطور باید این مشکل رو رفع کرد؟ :متفکر:
توی کدها PHP من اگه ابتدا یا انتهای کدها فاصله گذاشته بشه به اونها ایراد میگیره!!
مثلا کد زیر با خطا مواجه میشه:

<?php
echo "test";
?>
البته وقتی خطا میگیره که کد رو از جایی کپی کرده باشم و اگه خودم این رو بنویسم مشکلی نداره
سپاسگزارم

yones_safari
جمعه 07 بهمن 1390, 19:37 عصر
درود
واسه من تا به حال چنین مشکلی پیش نیومده.ولی میتونی ?> آخری رو ننویسی اینجوری فکر کنم مشکل فاصله آخری رفع میشه و میمونه فاصله اولی.

parsidev
جمعه 07 بهمن 1390, 19:55 عصر
وقتی کدی رو کپی می کنی ابتدا تو یه ادیتوری غیر هوشمند مثل نت پد کپی کنید تا کد های پنهان اون حذف بشه و بعد از داخل نت پد داخل فایل کپی کنید...

mbf5923
جمعه 07 بهمن 1390, 20:16 عصر
البته این کارهایی که میفرمایید هیچکوم نمیشه
من تا حالا داشتم کار میکردم که یک دفعه اینجوری شده

tux-world
جمعه 07 بهمن 1390, 23:35 عصر
اون ایراد چیه؟ اینجا بذارید ببینیم

MMSHFE
شنبه 08 بهمن 1390, 08:58 صبح
متن پیغام خطا؟

mbf5923
شنبه 08 بهمن 1390, 13:36 عصر
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\sample\test.php on line 2
ورژن آپاچی 2.2
ورژن PHP 5.3.8

MMSHFE
شنبه 08 بهمن 1390, 14:47 عصر
این مشکل وقتی پیش میاد که رشته شما محصور در گیومه خاصی (معمولاً گیومه جفت) باشه و دقیقاً همون نوع گیومه توی خود رشته هم استفاده شده باشه و Escape نشده باشه. برای رفع مشکل، گیومه های داخل رشته رو با \ تبدیل به کارکتر معمولی گیومه کنید تا با گیومه انتهای رشته اشتباه گرفته نشن. اگه باز هم مشکل پابرجا بود، یکبار متن رو توی Notepad کپی کنید و یکی از کارکترهای گیومه داخل متن رو انتخاب کنید و Ctrl+C رو بزنید. حالا Ctrl+H رو بزنید و در کادر Replace در قسمت Find What اون رو Paste کنید. در قسمت Replace With هم کارکتر گیومه رو تایپ کنی و دکمه Replace All رو بزنید و نهایتاً متن اصلاح شده رو کپی کرده و توی کدتون بکار ببرین. موفق باشید.

AMIBCT
شنبه 08 بهمن 1390, 15:05 عصر
بسته به جایی که کد رو از اون کپی می‌کنید( معمولا صفحات وب )
کاراکترهای کنترلی ممکن است قبل، بعد یا میان دستورهای برنامه‌نویسی قرار بگیرند
این کدها وجود دارند ولی قابل دیدن نیستند

تنها فاصله و tab می‌توانند بین دستورات php قرار بگیرند

mbf5923
شنبه 08 بهمن 1390, 15:09 عصر
ممنونم جناب شهرکی عزیز ولی بنده با کدهای ساده هم همین مشکل رو دارم!
به پست اول بنده نگاه کنید.

MMSHFE
شنبه 08 بهمن 1390, 15:56 عصر
بله متوجه شدم. قسمت دوم پاسخ قبلی بنده رو دوباره بخونید (اگه باز هم مشکل پابرجا بود...). اون رو برای همین گذاشتم. بعضی وقتها ممکنه توی متن کارکتر گیومه منحنی (Curly Quote) یعنی کارکترهای « و » وجود داشته باشه ولی بخاطر فونت بکاررفته در متن، اون رو مثل گیومه معمولی ببینید. بهتره این گیومه ها رو هم به روشی که گفتم تبدیل به گیومه معمولی کنید. موفق باشید.

mbf5923
شنبه 08 بهمن 1390, 16:54 عصر
من به یک نتیجه اخلاقی رسیدم :قهقهه: از وقتی ورژن PHP رو ارتقا دادم از سایت برنامه نویس کدهایی که کپی میکنم رو نمیتونیم اجرا بگیرم درحالی که از بقیه سایت ها کد میگیرم مشکلی ندارم
ناگفته نماند با حذف فاصله هایی که درون کدها ایجاد میشه هم مشکلم حل نمیشه مگه اینکه تمام فاصله هایی که بین خطوط یا اول و آخر خطوط هستش رو حذف کنم
البته با کدهایی که درون تگ هایی به غیر از تگ PHP قرار گرفتن مشکلی ندارم
یعنی به این ایراد میگیره:

<?php
echo "This is a test";
?>
ولی با این مشکلی نداره:

<?php
echo "This is a test";
?>

ravand
شنبه 08 بهمن 1390, 18:12 عصر
ببخشيد يعني اون دو كدي كه شما نوشتيد چه فرقي با هم داره؟!

MMSHFE
شنبه 08 بهمن 1390, 18:29 عصر
کدها فرقی نداره. فقط اولی توی تگ PHP هست و دومی توی تگ HTML که باعث شده یکسری کارکترهای غیر مجاز ازنظر نسخه های جدید PHP به کدها در حالت PHP اضافه بشه. راستی، توی تنظیمات PHP جدیدتون ببینید Magic Quotes روشنه یا خاموش؟ اگه روشنه خاموشش کنید و ببینید مشکل رفع میشه یا نه؟

ravand
شنبه 08 بهمن 1390, 18:37 عصر
تابع header و سيژن هم اين مشكل رو داشت كه ما با انتخاب گزينه ي Encode in utf-8 without BOM مشكل حل ميشد مشكل شما به انتخاب اين گزينه حل نميشه؟

MMSHFE
شنبه 08 بهمن 1390, 19:03 عصر
این مشکل دلیلش یک مسئله دیگه هست و ارتباطی به توابع هدر نداره. مسئله سر وجود کارکترهای غیرمجاز در رشته هایی هست که ادیتور سایت برنامه نویس ایجاد میکنه. بنظرم بهتره یک فکری برای Syntax Highlighter سایت بشه و هرچه زودتر یک نسخه خوب و پایدار جایگزین نسخه فعلی بشه. اصلاً نفهمیدم قبلی چه مشکلی داشت که عوضش کردن؟

mbf5923
شنبه 08 بهمن 1390, 19:10 عصر
تابع header و سيژن هم اين مشكل رو داشت كه ما با انتخاب گزينه ي Encode in utf-8 without BOM مشكل حل ميشد مشكل شما به انتخاب اين گزينه حل نميشه؟
نه نشد
هرچی یونیکد بود امتحان کردم اما کارساز نبود :لبخند:

توی تنظیمات PHP جدیدتون ببینید Magic Quotes روشنه یا خاموش؟
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off