ورود

نسخه کامل مشاهده نسخه کامل : يك سوال ساده در مورد php



mra1online
22-01-2012, 12:35
سلام دوستان
من مي خواهم يك اسكريپت طراحي كنم به طوري كه با فايل html وجود داشته باشه كه در آن متن زير وجود داشته باشد:
"سلام.به وبسات{site} خوشامديد,نام كاربري شما {user_name} است و ايميل شما {email} است"
.
.
.
و بعد با يك فايل php به جاي كلمه هاي {site} و {user_name} و {email} كلمات مناسب قرار داده شود

فايل html جدا و فايل php جدا باشد


من توانستم براي متني كه يكي از اون كلمات را دارد اسكريپت طراحي كنم و لي اگه كلمات به دو يا چند تا مي رسه گير مي كنم

لطفا كمكم كنيد

kaka.ronaldo
26-01-2012, 21:43
چرا میخواین جدا باشن ؟ میتونی از این کد استفاده کنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

moein_ak
28-01-2012, 02:50
چرا میخواین جدا باشن ؟ میتونی از این کد استفاده کنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دوست عزیز این روشیه که اکثر سیستمای تمپلیت واسه جلوگیری از شلوغ شدن تمپلیت استفاده میکنن
در جواب دوستمونم میشه بگی از چه کدی استفاده میکنی که کار نمیکنه؟

graphic1
29-01-2012, 01:32
فکر می کنم راهش این باشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تست شد
خروجی:
این یک متن تستی است من محمد هستم

دستور str_replace() باعث می شود هرتعداد {name} در متن باشد به جای آن متغییر $name قرار بگیرد.

persian_test
30-01-2012, 01:21
اگر قصد دارید این مفهوم رو که در php بهش میگن template engine رو کامل درک کنید و ازش بطور بهینه استفاده کنید smarty ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])بهترین گزینه است.
بنظرم سوالتون با این مفهوم که گفتم برخلاف عنوان تاپیک "ْساده" نیست :-)

moein_ak
31-01-2012, 00:25
اگر قصد دارید این مفهوم رو که در php بهش میگن template engine رو کامل درک کنید و ازش بطور بهینه استفاده کنید smarty ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])بهترین گزینه است.
بنظرم سوالتون با این مفهوم که گفتم برخلاف عنوان تاپیک "ْساده" نیست :-)

به نظر من twig گزینه خیلی بهتریه:46:
من خیلی با smarty کار کردم ولی تو یه نگاه عاشق twig شدم:31:

persian_test
02-02-2012, 00:04
به نظر من twig گزینه خیلی بهتریه:46:
من خیلی با smarty کار کردم ولی تو یه نگاه عاشق twig شدم:31:

حق با شماست

peyman1987
02-02-2012, 22:10
برای پیاده سازی چیزی که میخواین 2 روش کلی وجود داره:

1- استفاده از توابع رشته ای:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تابع str_replace میتونه از شما دو تا آرایه بگیره و اعضاش رو با هم جابجا کنه توی رشته.

البته راه بهتر اینه که شما یه تابع مثل تابع زیر بنویسید برای این کار:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خوب این به مراتب بهتر و استانداردتره ولی بازم میشه بهترش کرد.

2 - روش دوم استفاده از عبارات با قاعده یا Regular Expressione:

اینم یه روش کاره که میتونین با عبارات با قاعده تگهاتون رو با مقادیر متناظرشون جابجا کنین:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این روش با اینکه سختتره ولی به نظرم خیلی بهتره و کارش هم اینه که میاد همه مقادیری رو که داخل {} هستن رو پاس میده به یه تابع که توی این مثال یه Anonymous Function با تابع create_function ساخته شده ولی میتونین یه فانکشن معمولی هم بسازین و به جاش پاس بدین به preg_replace_callback. و اون تابع هر چی که return کنه جایگزین اون مقدار پیدا شده میشه.

بهرحال این ابتدایی ترین کاریه که یه template engine میکنه و اگه امکانات بیشتری بخواین میتونین از engine های پیشرفته استفاده کنین.