วิธีการทำให้ภาษา php เข้าไปเก็บข้อมูลและแสดงข้อมูลเฉพาะที่เราต้องการ


PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

Post Reply
User avatar
jamepiyawat
PHP VIP Members
PHP VIP Members
Posts: 1514
Joined: 21/05/2019 10:45 am

วิธีการทำให้ภาษา php เข้าไปเก็บข้อมูลและแสดงข้อมูลเฉพาะที่เราต้องการ

Post by jamepiyawat » 22/06/2019 12:13 pm

พอดีว่าผมได้รับโปรเจ็กเล็ก ๆ มาหนึ่งอย่างนั้นก็คือการที่ให้ผู้ใช้กรอก URL ของ YouTube ลงไปแล้าทางโปรแกรมก็จะสามารถค้นหา keyword ออกมาได้ด้วยภาษา php โดยในบทความนี้ผมก็จะหยิบยกโค้ดบ่างส่วนเอามาแชร์ความรู้กันจะเป็นอย่างไรก็ลองไปอ่านกันเลย
คำสั่งที่ใช้งานหลัก ๆ ก็คือ file_get_contents() , preg_match() , json_decode()

Code: Select all

<?php
$link_content = file_get_contents('https://www.youtube.com/watch?v=39S__ck2VSI');
preg_match('/ytplayer.config \=(.*);ytplayer.load/', $link_content, $matchs);
$result = json_decode($matchs[1], true);
$player_response = json_decode($result['args']['player_response'], true);
// $player_response['videoDetails'] เป็น array จะเก็บรายละเอียดของวีดีโอ title description keywords
// ดึงค่า keywords ออกมาเป็น array
$keywords = $player_response['videoDetails']['keywords'];
print_r($keywords);
ผลลัพธ์ที่ได้

Code: Select all

Array ( [0] => SY51 [1] => NACC [2] => SY51xNACC [3] => ดีกว่านี้ [4] => ปปช ) 

เรามาอธิบายคำสั่งแต่ละบรรทัดกันนะครับ ในที่นี้ผมจะขอเข้าไปเก็บ soutce จาก youtube คลิปหนึ่งให้ไปเก็บ keyword ข้างในนะครับ โดยการใช้คำสั่ง file_get_contents จากนั้นเราก็ลองเข้าไป view page source ดูว่า keyword ของเราเก็บไ้ว้ที่ไหน
วิธีการทำให้ภาษา php เข้าไปเก็บข้อมูลและแสดงข้อมูลเฉพาะที่เราต้องการ Selection_730.png
Selection_730.png (7.29 KiB) Viewed 192 times
แล้วลองไล่ดูว่า keyword ถูกเก็บไว้ในไหน

Selection_731.png
จะเห็นได้ว่ามันถูกเก็บไว้ใน ytplayer.config เราจึงต้องดึงข้อมูลข้างในนี้ออกมาให้หมดก่อนเมื่อเราดึงออกมาทั้งหมดแล้วเราก็ต้องเลือกเข้าไปเก็บข้อมูลข้างใน ytplayer.config ด้วยคำสั่ง preg_match

Code: Select all

preg_match('/ytplayer.config \=(.*);ytplayer.load/', $link_content, $matchs);
$result = json_decode($matchs[1], true);
ส่วนคำสั่ง json_decode ก็จะใช้ในการจัดรูปแบบข้อมูล JSON ที่เป็นตัวแปรของ PHP ให้ออกมาเป็น String ถ้าเราลองให้แสดงข้อมูลออกมาด้วยคำส่ัง

Code: Select all

print_r($result); 
เราก็จะเห็นข้อมูลมากมายเพราะเรายังไม่ได้เลือกให้เข้าไปเก็บข้อมูลตรงส่วนไหนนั้นเองแต่ในส่วน keyword จำเป็นต้องเขาไปที่ args และ player_response ก่อนตามคำสั่ง

Code: Select all

$player_response = json_decode($result['args']['player_response'], true);
ถ้าเราลองให้แสดงข้อมูลออกมาด้วยคำสั่ง

Code: Select all

print_r($player_response); 
เราจะเห็น keyword ได้ชัดขึ้นแล้วเราจะเห็นได้เลยว่าอยู่ใน videoDetails แล้วก็ keywords เลย
Selection_733.png
เราจึงใช้คำสั่งเพื่อเลือกให้แสดง keywords เป็น array

Code: Select all

$keywords = $player_response['videoDetails']['keywords'];
เท่านี้เราก็จะเป็นการแสดงค่าเฉพาะ keyword แล้ว

เป็นอย่างไรบ้างครับบทความนี้อธิบายเข้าใจหรือทางผู้เขียนบทความนี้ก็หวังว่าจะเป็นความรู้ให้กับผู้ที่เข้ามาสนใจอ่านบทความนี้นะครับคงจะไม่ยากเกินไปนะครับสำหรับบทความนี้หวังว่าจะได้รับความรู้ความสามารถสำหรับภาษา php กันบ้างไม่น้อยก็น้อยมากนัครับและทางผู้เขียนบทความหวังเป็นอย่างยิ่งว่าท่านที่ได้รับความรู้นี้ไปแล้วจะนำไปส่งต่อผู้ที่สนใจภาษา php เหมือนกับพวกเรานะครับ สวัดดีครับ

Post Reply

Return to “PHP Knowledge”

Users browsing this forum: No registered users and 7 guests