جایگزینی کدهای php در یک string
سلام
من قصد دارم یه قالب طراحی کنم که کاربر به راحتی استفاده کنه و تغییر بده
به این منظور نیاز دارم که سیستم راحتی بنویستم
حالا اگه کاربر در قالب اینو بنویسه : X1
باید زمان اجرا X1 تبدیل بخ if(y == z) بشه
مثل قالب های بلاگفا که یه کد اختصاصی برای این مورد دارن
نقل قول: جایگزینی کدهای php در یک string
خوب یک سری خطوط کد باید داشته باشید و یک سری کلمه کلیدی که خودتون به این خطوط کد اختصاص میدید و با اجرای برنامه توسط کاربر خطوط برنامه رو کامپایل یا پیمایش میکنید و به جای کلمات کلیدی که به کاربرده و شما تعریف کردین کد مربوطه رو میذارید... و بعد که کدها رو جایگزین کردین اینکلودش میکنید به پیج تا حالا باز سرور اونو کامپایل کنه...
نقل قول: جایگزینی کدهای php در یک string
جالب شد واسه خودمم...
مثلا این کد رو ببینید:
صفحه testMyCode.php
echo"this is file with first content";
صفحه index.php
include 'test1.php';
$data='<?php if(1==1)echo "this is my code injected in testcode file";?>';
file_put_contents('test1.php', $data);
include 'test1.php';
نقل قول: جایگزینی کدهای php در یک string
مشکل اینه من نمی خوام include کنم
نقل قول: جایگزینی کدهای php در یک string
خوب باز هم مشکلی نیست:
$data='if(1==1)echo "this is my string as php code";';
eval("$data");
نقل قول: جایگزینی کدهای php در یک string
ممنون دوست عزیز
replace رو چطور انجام بدم ؟
چون کد ما از قبل فراخوانی شده
مثال :
$txt = '1{foo}3';$data = str_replace('{foo}', 'if(1==1)echo 8', $txt); eval("$data");
نقل قول: جایگزینی کدهای php در یک string
باید رشته رو تفکیک کنید اونهایی که قبل کلمه کلیدی هستن رو نمایش بدید به کلمه کلیدی که رسیدین جایگزین کنید و بعدیهاش رو هم باز نمایش بدین:
$txt = '1{foo}3';
preg_match_all('/(.*)\{(.*)\}(.*)/', $txt,$matches);
for ($i=1;$i<count($matches);$i++) {
if($matches[$i][0]!='foo')
echo $matches[$i][0];
else
eval('if(1==1)echo 8;');
}
نقل قول: جایگزینی کدهای php در یک string
ممنون اما این کار منطقی فکر نکنم باشه
چون پردازش رو بالا میبره
اینطور نیست ؟!
در ضمن اگه 7-8 تا کد foo داشتیم چی ؟
این فقط برای آخری کاربرد داره
نقل قول: جایگزینی کدهای php در یک string
منطقی که من رو منطقش چون تو سیستم شما نیستم که چه کاری میخواید بکنید نظری نمیتونم بدم فقط میدونم کار میکنه به درستی و این یکی از راه حل ها میتونه باشه...
و در مورد این که فقط واسه آخره خیر این رو میتونید پویا کنید تا هر چندتا foo که داشتید بتونه بخونه یکم کار بیشتر میخواد...
من اینطوری نوشتم ولی شما میتونید واسه هر کلید این کارو بکنید یا یه الگوریتم یا راه حلی پیدا کنید که همه رو پوشش بده راه حل رو دارین ازین به بعد به مهارت خودتون بستگی داره...
نقل قول: جایگزینی کدهای php در یک string
اگه واسه قالب میخوای اسمارتی رو یه نگاه بنداز
http://www.smarty.net/