چگونه بخشي از فايل رو بخوانم ؟(Include يا fopen )

elecit

Member
با سلام !
من 2 تا فايل دارم index.php و data.php و مي خوام بخشي از فايل data.php رو داخل فايل index.php را فراخوان كنم . (فايل data.php داراي كدهاي html و PHP هست)
خب با آشنايي كه من دارم 2 حالت هست يكي دستور include كه تمام محتويات فايل data.php رو پيوست مي كنه . حالت دوم هم استفاده از دستور fopen هست . خوبي دستور include است هست كه دستورات html را به صورت معمولي در نظر مي گيرد و PHP رو هم اجرا مي كنه اما همه فايل رو مي خونه .
در حالت ديگه بوسيله دستورات fopen و يا مشابه مي تونسم بخشي از فايل رو بخونيم اما اگه اون بخش از فايل داراي دستورات PHP هم باشه ديگه مشكل داريم . حالا به صورت زير توضيح ميدم.

مثال :
محتويات فايل data.php به صورت زير است :
PHP:
code haye HTML 
<? 
echo'salam';  

?> 
<salam> 
code haye Html
خب من مي خوام دستورات اين فايل تا تگ <salam> در داخل فايل index.php اجرا بشه . چيكار كنم ؟
 

bahy_my

Active Member
خوب شما باید با یک تابع اینو جدا کنی.... که این تا بع حاصل رو تو یه آرذایه عددی قرار می ده و می تونی ازش استفاده کنی
PHP:
$mystr=explode("<salam>",$STRING);
$mystr[0'];
$mystr[1];
اندیس صفر قبل از تگ شما رو بر می گردونه.
اندیس یک بعد از تگ رو.
امری باشه ؟
 

elecit

Member
خوب شما باید با یک تابع اینو جدا کنی.... که این تا بع حاصل رو تو یه آرذایه عددی قرار می ده و می تونی ازش استفاده کنی
PHP:
$mystr=explode("<salam>",$STRING);
$mystr[0'];
$mystr[1];
اندیس صفر قبل از تگ شما رو بر می گردونه.
اندیس یک بعد از تگ رو.
امری باشه ؟

خب ادامشو بگو عزيزم !
منظورم اين هست كه الان انديس صفر شما شامل كدهاي HTML و كدهاي PHP هست ! چجوري خروجي داشته باشيم ؟
 

elecit

Member
ببين اگه اين رو $mystr[0'];
بخواهيم چاپ كنيم ! كدهاي PHP رو چاپ مي كنه و اگر بخواهيم از دستور Eval استفاده كنيم باز ERROR ميده !
 

elecit

Member
كسي ياد نداره ؟
چرا كسي جواب نمي ده ؟ احساس مي كنم تحريم شدم ! اما دليلش رو نمي دونم .
 

bahy_my

Active Member
سلام
نه بابا عزیز تحریم کجا بود.
منظورت رو خوب نمی گی.....
خوب مگه تو نمی خوای کدهای قبل یا بعدشو نمایش بده ؟
 

elecit

Member
مي شه الان بگين كه آرايه ي با انديس صفر بالا چه مقداري داره ؟
 

elecit

Member
متن هایی که قبل از <salam> هستش :

code haye HTML
<?
echo'salam';

?>

ببين اگه الان اين دستور رو اجرا كنيم :

PHP:
echo array[1];

خروجي اينو نشون مي ده :

code haye HTML
<?
echo'salam';

?>

بايد چيكار كرد كه دستور PHP هم اجرا بشه يهني اين نشون داده بشه :

PHP:
code haye HTML  
salam

حالا فهميدي چي مي گم ؟

در كل مي خواشتم بگم وقتي يه آرايه داريم كه خودش داراي دستورات PHP هست چطوري بايد آرايه رو به خروجي بفرستيم
ميدوني كه از دستور eval نمي شه استفاده كرد چون كدهاي HTML رو بصورت دستور PHP در نظر مي گيره و خطا ميده ! حالا اگه متوجه شدين جواب بدين.
ميخوام بخشي از فايل data.php رو به اسكريپت در حال اجرا پيوند بزنم
 
بیا عزیز برو حال کن
این مثلا فایل data.php
کد:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>

<body>
<?php
for($_i=0;$_i<10;$_i++)
{
	echo 'sasasa';
}
?>
</body>
</html>

اینم کد مورد نیازت :

کد:
<?php

$_file = fopen('data.php','r');
$_content = fread($_file,filesize('data.php'));
fclose($_file);

preg_match('/\<\?php(.*)\?\>/si',$_content,$_var);
eval($_var[1]);



?>


بازم برید بگید این یارو هیچی حالیش نیست :cry: :-? :sad:
 

elecit

Member
من اسكريپت دروم رو در فايل script.php قرار دادم . اينم جوابش :

Warning: fread() [function.fread]: Length parameter must be greater than 0. in /home/argomanc/public_html/test/script.php on line 4
 

elecit

Member
اين كد شما خوبه اما بخش Html رو اجرا نمي كنه
در واقع اين كد مي ره توي آرايه ما دنبال كد Php مي گرده و اجراش مي كنه اگع لطف كنيد آخرين توضيح منو تو اين زمينه بخونين فكر مي كنم خيلي بهتر بفهميد . خروجي بايد شامل كدهاي Html هم باشه !
 

oxygenws

Active Member
من یه سوال ازت دارم...
چرا می خوای این کار رو انجام بدی؟؟ به نظرم صورت مسئله ات مشکل داره!!
 
ببین عزیز از اینجا به بعدش دیگه خیلی تخصصی میشه کد نویسیش به این معنی که من نمیتونم یه کدی بهت بدم که تو همه موارد کار کنه هر صفحه data.php کد مخصوص خودشو میخواد واسه همین محتوای صفحه data.php رو اینجا بزار تا کدش رو برات بنویسم
 

elecit

Member
ببین عزیز از اینجا به بعدش دیگه خیلی تخصصی میشه کد نویسیش به این معنی که من نمیتونم یه کدی بهت بدم که تو همه موارد کار کنه هر صفحه data.php کد مخصوص خودشو میخواد واسه همین محتوای صفحه data.php رو اینجا بزار تا کدش رو برات بنویسم

ببين اين فايل data.php

PHP:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body>



<salam>

<div align="center">

محل قرار گرفتن كدهاي HTML
<?
phpinfo();
?>
		</div>
<salam>عنوان صفحه<salam>

خب حالا يه فايل داريم كه اطلاعات اين اسكريپت رو چاپ كنه .
از اولين تگ <salam> تا تگ دوم رو به عنوان متن صفحه در و محتويات تگ دوم تا تگ سوم را به عنوان TITLE صفحه برگردونه. حالا مهم اين هست كه من محتويات بين تگ اول تا تگ دوم رو چطور به صفحه الحاق كنم !
اگر محتويات بخش اول رو در يه متغير قرار بديم و بخش دوم رو در يه متغير ديگه قرار بديم , به نظر مشكل حل شده چون ما متن صفحه رو در يك متغير داريم و عنوان صفحه رو در متغير ديگر . خب حالا اگه با دستور echo متغير متن صفحه رو چاپ كنيم كدهاي PHP موجود در متن صفحه اجرا نمي شه . اگه از دستور eval براي اجرا كردن متغير اول استفاده كنيم بازم خطا ميگيره چون كد هاي HTML رو به صورت PHP نمي تونه در نظر بگيره !
بنابراين من چطوري ميتونم محتويات بين تگ اول و دوم <salam> رو نمايش بدم ؟
 
آخرین ویرایش:
ببین من گفتم مثال نزن
من واسط کدی مینویسم که این کار رو بکنه منتهی فقط رو همین محتوی کار میکنه
پس لطفا محتویات واقعی رو بزار که کدی که مینویسم در واقعیت واسط قابل استفاده باشه
 
این طور که من متوجه شدم شما می خوای اطاعات ما بین دو tag مثلا <tile> </title> رو بگیری حالا اگر
PHP:
<?php $title = 'welcome to my site'; ?>
<title><?php echo $title; ?></title>
بازم شما welcome to my site رو به عنوان جواب بگیری
خوب این قضیه کار مشکلی نیست
PHP:
<?php
ob_start();
	include("data.php");
$GLOBALS['content'] = ob_get_contents();
ob_end_clean();

$content = spliti("<title>", $content);
$content = spliti("</title>", $content[1]);
echo $content['0'];
?>
حالا شما هر چی دوست داری توی فایل data.php بزار این ما بین دو tag رو به شما می ده

موفق و پیروز باشید
یا علی
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا