ویرایش جرئی یک سورس html-dom (حل شد)
سلام خدمت دوستان گرامی من در یک پروژه دارم از simple_html_dom.php کمک میگیرم .که همانطور که میدانید کارش اینه که یک صفحه رابرای ما در یک صفحه دیگه فراخوانی میکنه. در همین باره میخواستم یک صفحه ای را فراخوانی کنم که درش لینک وجود دارد و من نمیخواهم این لینک ها در صفحه وجود داشته باشد و میخوام متن بصورت ساده بیاد. آیاامکان همچین کاری وجود دارد؟یا خیر؟ ممنون که کمک میکنید...
نقل قول: ویرایش جرئی یک سورس html-dom
از این طریق میتونید متن داخل تگ مورد نظرتونو بدون اسکریپت دریافت کنید.. یعنی همون متن خالی
$html->find('tagName')->plaintext;
نقل قول: ویرایش جرئی یک سورس html-dom
ممنون اقا محمد
ولی اسم تگ مورد نظر table هست که داخل tagname در کدی که دادید گذاشتم ولی جواب نداد کد خودم هم این جا گذاشتم
$ar_table = $html->find('table');
نقل قول: ویرایش جرئی یک سورس html-dom
البته کد رو بصورت $ar_table = $html->find('table')->plaintext;
هم گذاشتم ولی اون موقع دیگه هیچ چی نمایش داده نمیشه
نقل قول: ویرایش جرئی یک سورس html-dom
یک نمونه از کد HTML که دارین و چیزی که میخواین براتون تولید بشه بگذارین. شاید بدون DOM و با RegExp بشه نتیجه بهتر و با راندمان بالاتری گرفت.
نقل قول: ویرایش جرئی یک سورس html-dom
جناب MMSHFE کد php هست نه HTML
بعد کد هم simplehtmldom هست دیگه میدونن دیگه احتمالا بچه ها
http://simplehtmldom.sourceforge.net/
نقل قول: ویرایش جرئی یک سورس html-dom
کد اونو میدونم. میگم کد جدولی که میخواین لینکهاش حذف بشه رو بگذارین.
نقل قول: ویرایش جرئی یک سورس html-dom
نقل قول: ویرایش جرئی یک سورس html-dom
این کد رو تست کنید:
<?php
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => '', // handle all encodings
CURLOPT_USERAGENT => 'spider', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
$data = get_web_page('http://www.beytoote.com/marketprices/phone-price/');
$data = preg_replace('#<a.*?>(.*?)</a>#i', '$1', $data['content']);
echo '<pre>' . htmlentities($data, ENT_QUOTES, 'utf-8') . '</pre>';
?>
با این کد من همه لینکها رو حذف و به متن معمولی تبدیل کردم. حالا هرجور لازم دارین تغییرش بدین یا اینکه خروجیشو بدین به simple_html_dom تا جدولهای دلخواه رو ازش استخراج کنه براتون.
نقل قول: ویرایش جرئی یک سورس html-dom
همین کدی که دادید عینا در
wamp و سرور خودم گذاشتم و این ارور رو دادن:
Warning: curl_setopt_array() [function.curl-setopt-array]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home3/gsayhgd/public_html/wp-content/themes/gld/index.php on line 37
نقل قول: ویرایش جرئی یک سورس html-dom
نقل قول: ویرایش جرئی یک سورس html-dom
یا php شما در حالت safe mode اجرا شده و یا curl فعال نیست. کد مشکلی نداره. بهتره از xampp استفاده کنید.
نقل قول: ویرایش جرئی یک سورس html-dom
من توی سایت های انلاین هم تست کردم
http://phptester.net/
http://sandbox.onlinephpfunctions.com/
ولی جواب ندادن
ولی وقتی روی این سایت
http://codepad.viper-7.com/
تست کردم جواب داد.
سیستم من وردپرسه چه کنم تا کار کنه؟
نقل قول: ویرایش جرئی یک سورس html-dom
کسی از دوستان اگر راه حل دیگری به ذهنش میرسه بیان کنه
ازتون ممنونم
نقل قول: ویرایش جرئی یک سورس html-dom
نقل قول: ویرایش جرئی یک سورس html-dom
لطفاً Spam نگذارین. اگه کسی بلد باشه و تمایل داشته باشه، پست میگذاره. درمورد سیستمتون که گفتین وردپرس هست نمیدونم حقیقتش چون کدهاتون رو ندیدم ولی بهرحال باید چک کنید چه خطایی میده یا اگه صفحه خالی میاد، ببینید cURL بازه؟ بعضی وقتها توی disabled_extension یا disabled_functions رو هم باید چک کنید. بهرحال همونطور که گفتم کد تست شده و مشکلی نداره و اگه مشکلی هست، صددرصد از تنظیمات هاستتون یا اسکریپتی که ازش استفاده میکنید هست.
نقل قول: ویرایش جرئی یک سورس html-dom
درسته همانطور که گفتم کد شما مشکلی نداره
ولی یه چیزی جناب mahmod2000 گفتم که اگه اون بشه کار خیلی بی دردسرتره
میخواستم نظر دوستان راجب اونو بدونم
نقل قول: ویرایش جرئی یک سورس html-dom
دوست عزیز با عرض پوزش من خیلی درگیر هستم این چند وقت..
وقت بهم اجازه بده کد را بررسی میکنم و طبق همان چیزی که گفتم براتون کد را قرار میدم
باز هم پوزش
نقل قول: ویرایش جرئی یک سورس html-dom
نقل قول:
نوشته شده توسط
MMSHFE
این کد رو تست کنید:
<?php
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => '', // handle all encodings
CURLOPT_USERAGENT => 'spider', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
$data = get_web_page('http://www.beytoote.com/marketprices/phone-price/');
$data = preg_replace('#<a.*?>(.*?)</a>#i', '$1', $data['content']);
echo '<pre>' . htmlentities($data, ENT_QUOTES, 'utf-8') . '</pre>';
?>
با این کد من همه لینکها رو حذف و به متن معمولی تبدیل کردم. حالا هرجور لازم دارین تغییرش بدین یا اینکه خروجیشو بدین به simple_html_dom تا جدولهای دلخواه رو ازش استخراج کنه براتون.
برای پشتیبانی هاستم فرستادم جوابشون این بود:
با سلام
امکان استفاده از آپشن CURLOPT_FOLLOWLOCATION برای تابع curl روی سرویس میزبانی وب وجود ندارد.
این آپشن حتی با خاموش کردن safe mode نیز قابل استفاده نخواهد بود.
حالا من چی کارکنم واقعا گیر کردم
نقل قول: ویرایش جرئی یک سورس html-dom
خوب این CURLOPT_FOLLOWLOCATION رو حذف کنید ببینید کار میکنه کد
احتمال زیاد باید کار کنه
شما چه بخشی از این پیج رو میخواید بگیرید؟
نقل قول: ویرایش جرئی یک سورس html-dom
من میخوام table
قیمت موبایل رو بگیرم
نقل قول: ویرایش جرئی یک سورس html-dom
require 'simple_html_dom.php';
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_ENCODING => '', // handle all encodings
CURLOPT_USERAGENT => 'spider', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
$data = get_web_page('http://www.beytoote.com/marketprices/phone-price/');
$html = str_get_html($data['content']);
foreach($html->find('div.pricetab') as $price)
{
$price = preg_replace('#<a.*?>(.*?)</a>#i', '$1', $price);
echo $price;
}
فایل simple_html_dom.php مسیرش رو درست کنید موقع استفاده کردن
با کمک کد جناب شهرکی اطلاعات جدول رو میگیریم و لینکی اگه باشه حذف میشه
بعد میتونی بهش استایل بدی، همونجور که میخواید نمایش بدید
ببینید کار میکنه یا نه
نقل قول: ویرایش جرئی یک سورس html-dom
جناب محمد اقا واقعا از شما تشکر میکنم
واقعا یک بار بزرگی را از روی دوش بنده برداشتید
و همچنین از شما جناب شهرکی
(واقعا نمیشود از دکمه تشکر استفاده کرد)