PDA

View Full Version : تبدیل کد یه صفحه که به صورت Text هست به کد HTML



C#Student
چهارشنبه 31 فروردین 1390, 11:30 صبح
سلام دوستان
من یه برنامه php دارم که کد صفحه ای رو که میخوام برام میاره اینجوری:

function getSource($path){
$f = @fopen($path, "r");
$data = "";
if($f){
while(!feof($f)){
$data .= htmlentities(fgets($f, 1024));
}
}else{
$data = "ERROR Opening path";
}
return $data;
}



ولی در نهایت کدی که توی متغیر data رفته به صورت text هست. مثل یه فایل متنی، که نمی شه روش با جاوااسکریپت کار کرد. من می خوام کد یه صفحه رو که به صورت text هست رو به صورت کدهای html تبدیل کنم تا در نهایت بتونم با جاوااسکریپت تگهایی رو که میخوام رو ازش جدا کنم. یعنی تبدیل به کدهایی بشه که بشه روش عملیاتی مثل getElementByTagName رو انجام داد. امیدوارم تونسته باشم مفهموم سوال رو برسونم!
ممنون میشم اگه کمک کنید!!

رضا قربانی
چهارشنبه 31 فروردین 1390, 16:18 عصر
خب داخل $data کدهای اچ تی ام ال رو اضافه کن

اگه می خوایی کدهای جاوا رو بندازی داخل متغیر باید تک کدیشن و دو کدیشن رو رعایت کنید و یا می تونی از echo هم استفاده کنی

در نهایت اگر نتونستی کدهای جاواتون رو اینجا قرار بدید تا چاره ای اندیشه کنیم
موفق باشید

MMSHFE
پنج شنبه 01 اردیبهشت 1390, 07:21 صبح
با سلام، يك راه ديگه هم هست. data$ رو توي يك فايل موقت با پسوند htm. ذخيره كنيد (با file_put_contents) و بعد، مثل يك فايل HTML معمولي باهاش كار كنيد و وقتي كارتون تموم شد، با unlink حذفش كنيد.
موفق باشيد.

C#Student
چهارشنبه 07 اردیبهشت 1390, 17:01 عصر
ممنون دوستان از راهنماییهای خوبتون
من با استفاده از این کد سورس صفحه رو توی یه فایل HTML ریختم.


fp = fopen( "a.html", "r" ) or die("Couldn't open a.html");
fwrite($fp, html_entity_decode($data));


البته همونجور که MMSHFE عزیز گفتن با file_put_contents هم می شه. من حالا که کد رو توی یه فایل html دارم می خوام یه جاوااسکریپت بنویسم که تگهای a رو پیدا کنه . اینجوری:


function hrf(){
var anchorTags = document.getElementsByTagName("a");

for (var i = 0; i < anchorTags.length ; i++){
dbphp(anchorTags[i].href);
}

}

function dbphp(anchor_a)
{

document.write("<?php
$conn= mysql_connect("localhost","root","");
mysql_select_db("spider",$conn);
mysql_query('set names "utf8"',$conn);
mysql_query("INSERT INTO `href`(`link`) values ('".$anchor_a."')",$conn);
?>");
}

حالا میخوام تگ head رو توی فایل html پیدا کنم و این فایل js رو اونجا لینک بدم و بعد دوباره اجراش کنم تا لینکهای href رو پیدا کنه بریزه توی DB. چه جوری توی برنامه توی یه فایل html خط اضافه کنم ؟ همون کاری که galiken_it عزیز هم بهش اشاره کرده.

ممنون دوستان

MMSHFE
پنج شنبه 08 اردیبهشت 1390, 09:54 صبح
با سلام، ميتونيد محتواي data$ رو كاركتر به كاركتر با كمك حلقه بخونيد و به همون صورت كاركتر به كاركتر توسط تابع fputc توي فايل HTML ذخيره كنيد. منتها داخل حلقه، بعد از ثبت هر كاركتر، 6 كاركتر آخر كه ثبت شده (يعني از 5 خونه قبل از خونه فعلي تا خونه جاري data$) رو چك كنيد و اگه برابر با <HEAD> بود، كد JS رو با fwrite اضافه كنيد. اينطوري موقعي كه تگ HEAD باز ميشه، كد JS درج ميشه و از اون به بعد حلقه به روال عادي خودش ادامه ميده و كاركتر به كاركتر تا انتها رو ذخيره ميكنه. اما در مورد اينكه توي DB ثبت كنيد، پيشنهاد ميكنم كد JS رو طوري بنويسيد كه با كمك AJAX، محتواي anchorTaghs[i].href رو براي يك صفحه PHP بفرسته و اون فايل PHP عمل ثبت توي DB رو انجام بده.
موفق باشيد.

C#Student
پنج شنبه 08 اردیبهشت 1390, 13:57 عصر
ممنون MMSHFE عزیز
من همین کار رو کردم، و تونستم موقعیت head رو در صفحه پیدا کنم و جایی که باید فایل جاوااسکریپت رو لینک بدم، ولی fwrite خصوصیتی نداره که بشه بهش گفت مثلا در مکان کاراکتر 259 این عبارت رو اضافه کن. می بره می ذاره ته فایل.

int fwrite ( resource $handle , string $string [, int $length ] )
تابعی هست که پوینتر رو ببره اونجایی که ما بهش می گیم؟

MMSHFE
پنج شنبه 08 اردیبهشت 1390, 23:31 عصر
با سلام، با کمک توابع ftell و fseek میتونید به ترتیب، موقعیت فعلی اشاره گر رو بدست آورده یا اون رو در مکان خاصی تنظیم کنید. لینک:
http://php.net/manual/en/function.fseek.php
موفق باشید.