PDA

View Full Version : سوال: نحوه انتخاب قسمتی از متن یک فایل



mehran_gh
پنج شنبه 19 فروردین 1389, 22:45 عصر
سلام
می‌خواستم با php محتویات قسمت مشخص شده ای رو از یک فایل بگیرم و در یک متغیر یا فایل دیگه ذخیره کنم، به این صورت که اگه فایل a.txt به صورت زیر باشد:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<target>--متن مورد نظر--
--متن--
</target>
</body>
</head>

با php محتویات درون تگ <target> </target> رو که "--متن مورد نظر--
--متن--" هست رو دریافت و در یک فایل جدید ذخیره کنم، قبلاً کاری مشابه همین رو با perl انجام دادم به این صورت:


use CGI;
use File::Basename;

$gb = dirname("$0")."/a.txt";
$form = new CGI;

print "Content-Type: text/html; charset=iso-8859-1\n\n";

open(FILE, "<$gb") or die("Cannot open guestbook file");

while (!eof(FILE)) {
while (1 == 1) {
chomp($line = <FILE>);
if ($line eq '</target>') {
last;
}
print CGI::escapeHTML($line)."<br>";
}

}
close(FILE);

با php اگر کسی از دوستان میتونه لطفاً راهنمایی فرماید.

امیـرحسین
جمعه 20 فروردین 1389, 02:06 صبح
با تابع file_get_contents (http://ir.php.net/manual/en/function.file-get-contents.php) می تونید به سریعترین شکل ممکن محتوای فایل رو بگیرید و توسط توابع Regex هم می تونید محتوای خاصتون رو پیدا کنید.
من از کد زیر برای پیدا کردن تگ title در صفحه استفاده می کنم:
$content = file_get_contents('a.txt');
preg_match("#<target>(.*?)</target>#s", $content, $match);
$data = !empty($match[1]) ? $match[1] : "";