แนะนำ function เด็ดๆ สำหรับคนชอบทำ webgen หรือดึง content ครับ

เริ่มโดย siamjung, 14 พฤศจิกายน 2008, 15:14:27

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

siamjung

แนะนำ function เด็ดๆ สำหรับคนชอบทำ webgen หรือดึง content ครับ  ::)

ไม่แน่ใจว่าเคยใช้กันหรือยังบังเอิญควานหาและเจอ function ดีๆนี้ใน php.net

คุณสมบัติ: เอาไว้เวลาที่เราดึงข้อมูลเนื้อหาจากเว็บปลายทาง แล้วทีนี้เราต้องการตัดพวก code html บางอย่างที่เราไม่ต้องการ

เช่นเพื่อนๆดึงข้อมูลบทความจากเว็บต่างประเทศเว็บนึง แล้วทีนี้ต้องการให้มีแต่เนื้อหาที่แสดงภาพ ได้แก่ tag <img> ให้เนื้อหาแสดง link ด้วย ได้แก่ tag <a> ส่วน tag อื่นๆที่ไม่ได้อยู่ในรูปแบบที่เราเลือกไว้ เจ้าฟังก์ชั่นนี้มันก็จะกำจัดออกให้เราเอง ไม่ต้องมา eregi_replace บ่อยๆ อิอิ  ;D

@@ ลองมาดูวิธีการใช้งานกันเลย @@


// ตัวอย่าง function จะมี 2 function ที่ต้องใช้ร่วมกันนะครับ

function removeEvilStyles($tagSource)
{
   // this will leave everything else, but:
    $evilStyles = array('font', 'font-family', 'font-face', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variant');

    $find = array();
    $replace = array();
   
    foreach ($evilStyles as $v)
    {
        $find[]    = "/$v:.*?;/";
        $replace[] = '';
    }
   
    return preg_replace($find, $replace, $tagSource);
}


function removeEvilTags($source,$allowedTags)
{
    $source = strip_tags(stripslashes($source), $allowedTags) ;
    return trim(stripslashes(preg_replace('/<(.*?)>/ie', "'<'.removeEvilStyles('\\1').'>'", $source)));
}


สมมุติไฟล์หลักที่ดึงบทความ ทำการดึงเนื้อหาด้วย

$data_body = file_get_contents("http://abccontent.com/content/golf-show.php") ; // สมมุตินะ

ทีนี้พอจะใช้ function คือเราต้องการแค่ให้ code html ในส่วนของรูปกับลิ๊งค์จากข้อมูลที่ดึง เราก็ต้องกำหนด tag ที่ต้องการให้มี

$allowedTags = '<br><img><a>'; // กำหนดค่าเนื้อหาที่ดึงมาแล้วว่าจะให้แสดง การขึ้นบรรทัดใหม่ด้วย <br> แล้วก็ภาพกับลิ๊งค์ อยากให้แสดง <p> ด้วยก็ได้นะ  :-\

$data_body = removeEvilTags($data_body,$allowedTags) ; // ตรงนี้คือการเรียกใช้ function ครับ

เอาหละ ทีนี้เพื่อนๆลอง echo ค่าเนื้อหามาดูจิ

<?php echo $data_body ; ?> อิอิ ก็จะได้แต่ tag ที่เราต้องการเบื้องต้น

สรุป! ฟังก์ชั่นนี้เป็นเบื้องต้นจำเป็นสำหรับคนที่ต้องการไล่ตัดทอนเนื้อหาที่ดึงมาแบบเหนือชั้นนะครับ ทีนี้พอจะ replace เนื้อหาส่วนใหนยังไงก็ค่อยเขียน function จัดการเอาอีกที !  ;D

ง่ายใหมครับ ลองดูนะครับ อิอิ  ::)
งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

superf

[direct=http://fx9.net]Blogส่วนตัว[/direct]

sompon

เิอาแบบเต็มๆๆ ได้ เปล่า ครับ  ไม่ค่อยเก่ง  PHP

สมมุติเรา จะดึงหน้า เว็บ นี้   .h xxx p://www . ballstep.net/www/ratio/indexratio.html

  เช่น
file  1 

    <?

?>
   



file  2 

    <?

?>
   


ขอบคุณครับ !
::)
ขอบคุณ!

siamjung

แบบเต็มๆอะเหยอ

// อันนี้เป็นไฟล์เก็บ function

functions.php

<?php
function removeEvilStyles($tagSource)
{
   // this will leave everything else, but:
    $evilStyles = array('font', 'font-family', 'font-face', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variant');

    $find = array();
    $replace = array();
   
    foreach ($evilStyles as $v)
    {
        $find[]    = "/$v:.*?;/";
        $replace[] = '';
    }
   
    return preg_replace($find, $replace, $tagSource);
}


function removeEvilTags($source,$allowedTags)
{
    $source = strip_tags(stripslashes($source), $allowedTags) ;
    return trim(stripslashes(preg_replace('/<(.*?)>/ie', "'<'.removeEvilStyles('\\1').'>'", $source)));
}

?>

----------------------------------------------

ต่อไปเป็นไฟล์ content.php แล้วกันนะครับ เป็นไฟล์ที่ทำหน้าที่ประมวลผลดึงข้อมูล ตอนทำจริงๆเพื่อนๆควรทำ cache ไว้ด้วยก็ดีครับ

// content.php

<?php
include_once("functions.php") ;
$url = "http://abcdefg.com/content/computer_trip.php" ;
$data_body = file_get_contents($url) ;

$allowedTags = '<br><img><a>'; // ระบุที่ tag html ที่ต้องการให้แสดงผล

$data_body = removeEvilTags($data_body,$allowedTags) ; // ระบบ keep แต่ tag ที่เราระบุและ replace html tag อื่นๆ

/* หลังจากนี้ก็เอาข้อมูลในตัวแปร $data_body ไปใช้ได้เลยครับ */
// จะเซฟเก็บลง file หรือจะ db ก็แล้วแต่ หรือจะ echo ค่าก็ตามที่ต้องการ

$fo = fopen("cache_content.txt","w") ;
flock($fo,2) ;
fputs($fo,$data_body) ;
flock($fo,3) ;
fclose($fo) ;

?>
งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

zerohate

ได้ผลจริงๆด้วย ขอบคุณครับ

แต่อีกนิดนึง พอดีเอาภาพจากเว็บอื่นมา มันไม่อ้างอิงพาร์ท พอมีวิธีแก้ไหมครับ
[direct=http://www.thaimetalhead.com/]Thailand Metal Music[/direct]

siamjung

อ้างถึงจาก: zerohate ใน 14 พฤศจิกายน 2008, 16:30:37
ได้ผลจริงๆด้วย ขอบคุณครับ

แต่อีกนิดนึง พอดีเอาภาพจากเว็บอื่นมา มันไม่อ้างอิงพาร์ท พอมีวิธีแก้ไหมครับ

แปลงเอาครับ

// ผมจะสมมุติให้นะครับ คุณต้องปรับเอาให้ตรงกับข้อมูลจริงๆที่ดึงมาเอง มันมีหลาย case นะครับ

สมมุติระบบเขา link ภาพแบบไม่ได้ใช้ path เต็ม ส่วนใหญ่จะเป็นแบบนี้ใช่ใหมหละครับ <img src="photo/image.jpg"> คุณต้องแปลง เป็น path หลักของเขามาแสดงเอาครับ

<?php

$imgpath = '<img src="photo/image.jpg">' ;

$imgnewpath = eregi_replace('src="photo','src="http://www.abc.com/photo',$imgpath) ; // เปลี่ยนเป็น url เต็มของเขา (จริงๆมีเทคนิคอื่นอีก อิอิ)

echo $imgnewpath ;

?>

ลองประยุกข์เอาครับ
งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

mixture

[direct=http://moomak.wordpress.com]จิ[/direct]

ClickToBan


boyfools


fernsterno

นายเฟิร์น นักเขียนอิสระ
Umadeska https://umadeska.blogspot.com/
ชะลอวัย สุนัข https://www.precision-vet.com/2025/04/29/therole-stem-cells/
btwo pet cute https://btwo4.wordpress.com/
Stem cells สัตว์เลี้ยง https://petguriko.blogspot.com/
Uma https://medium.com/@duck_123

Hunter1911

[direct=http://www.ayareew.com] Shopping Blog[/direct]