ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: pungplai ที่ 04 สิงหาคม 2012, 19:37:06



หัวข้อ: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 04 สิงหาคม 2012, 19:37:06
คือผมใช้ preg_match_all ดึงภาพจากฐานข้อมูลออกมาได้ แต่จะใช้ตัวแปรตัวใดที่จะไปรับ url มาแสดงได้ครับ

ยกตัวอย่าง สมมุติ $message เท่ากับไฟล์ภาพที่ถูกล้วงดึงออกมาจากฐานข้อมูลได้

โค๊ด:
<?
$message = "ลีจีอา Lee Ji Ah ดาราเกาหลี[img]http://www.pingbook.com/archive/200906241245819327.jpg[/img]";

preg_match_all('~\[img\]([^\[]+)\[\/img\]~',$message,$img);
print_r($img);

?>


Out put ที่ออกมาจะได้แบบนี้ :

โค๊ด:
Array ( [0] => Array ( [0] => [img]http://www.pingbook.com/archive/200906241245819327.jpg[/img] ) [1] => Array ( [0] => http://www.pingbook.com/archive/200906241245819327.jpg ) ) 
มันจะมีพาธไฟล์ตัวสุดท้ายที่ถูกดึงออกมาเป็นแบบนี้  http://www.pingbook.com/archive/200906241245819327.jpg

ผมจะไปเอามันมาใส่ที่ตัวแปร $path,$image ได้อย่างไร ต้องสร้างอะไรเพิ่มเพื่อจะไปดึงมันลงมาเพื่อให้มันแสดงเป็นรูปที่ $showimg ประมาณนี้ครับ

โค๊ด:
// แสดง
$path = $image;
$showimg = "<img src='$path' width='' height='' />";
echo $showimg;

echo "<br><hr><br>";


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: c0untry-m@n ที่ 04 สิงหาคม 2012, 20:00:45
แบบนี้ไหมครับ

โค๊ด:
<?
$message = "ลีจีอา Lee Ji Ah ดาราเกาหลี[img]http://www.pingbook.com/archive/200906241245819327.jpg[/img]";
$wstart = "[img]";
$wend = "[/img]";
$pstart = strpos($message,$wstart,0);
$pend = strpos($message,$wend,$pstart);
$img = str_replace($wstart,"",substr($message,$pstart,($pend-$pstart)));
$image = "<img src=$img />";
echo $image;
?>


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 04 สิงหาคม 2012, 20:45:34
แบบนี้ก็ใช้ได้ครับ แล้วถ้ามันมีหลายๆ img จะให้มันเลือกเอาภาพแรกภาพเดียวจะทำไงครับ
[img ]1.jpg [/img ]
[img ]2.jpg [/img ]
[img ]3.jpg [/img ]

ขอบคุณมากครับท่าน




หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: beg ที่ 04 สิงหาคม 2012, 21:30:19
$img เป็นอาร์เรย์สองมิติ
ต้องเขียนโค้ดแบบนี้ครับ

$img[ลำดับภาพ][1]

ถ้าจะแสดงภาพแรกก็จะเป็น  $img[0][1]

(ตำแหน่งแรกในอาร์เรย์จะเริ่มจาก 0,1,2,3,4 ส่วนตัวเลข 1 ช่องหลัง ไม่ต้องเปลี่ยนครับ)


โค๊ด:

// แสดงภาพแรก
$path = $img[0][1];
$showimg = "<img src='$path' width='' height='' />";
echo $showimg;

echo "<br><hr><br>";



หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 04 สิงหาคม 2012, 22:22:20
$img เป็นอาร์เรย์สองมิติ
ต้องเขียนโค้ดแบบนี้ครับ

$img[ลำดับภาพ][1]

ถ้าจะแสดงภาพแรกก็จะเป็น  $img[0][1]

(ตำแหน่งแรกในอาร์เรย์จะเริ่มจาก 0,1,2,3,4 ส่วนตัวเลข 1 ช่องหลัง ไม่ต้องเปลี่ยนครับ)


โค๊ด:

// แสดงภาพแรก
$path = $img[0][1];
$showimg = "<img src='$path' width='' height='' />";
echo $showimg;

echo "<br><hr><br>";


ภาพมันไม่แสดงนะครับ แบบนี้ผมทำมาแล้ว $img[0][1] ภาพมันไม่ออกเลยงง มาถามให้แน่ใจอีกครั้ง
ขอบคุณมากครับ


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: c0untry-m@n ที่ 04 สิงหาคม 2012, 23:06:51
แบบนี้ก็ได้ครับ

โค๊ด:
<?
$message = "ลีจีอา Lee Ji Ah ดาราเกาหลี[img]http://www.pingbook.com/archive/200906241245819327.jpg[/img]ksha;hark[img]http://www.thaiseoboard.com/avatarstorage/xavatar_59490.png.pagespeed.ic.XeO7ovgsVl.png[/img]";

preg_match_all('~\[img\]([^\[]+)\[\/img\]~',$message,$img);

foreach($img[1] as $image){
$path = $image;
$showimg = "<img src='$path' />";
echo $showimg;

echo "<br><hr><br>";
}
?>


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 05 สิงหาคม 2012, 00:02:17
สุดยอดครับ มีกี่รูปมาหมดเลย
จริงๆต้องการแค่รูปแรกรูปเดียว เดียวผมรองนั่งงม ให้เหลือรูปเดียวดู

ขอบคุณมากมายครับพี่


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 05 สิงหาคม 2012, 00:26:09
เหลือรูปเดียวแล้วครับ แต่เป็นรูปสุดท้ายที่ได้มา (ไปงมหาวิธีเอารูปแรกต่อ)

โค๊ด:
<?
$message = "ลีจีอา Lee Ji Ah ดาราเกาหลี<br>[img]http://www.pingbook.com/archive/200906241245819327.jpg[/img]ksha;hark[img]http://www.thaiseoboard.com/avatarstorage/xavatar_59490.png.pagespeed.ic.XeO7ovgsVl.png[/img]aaa[img]http://i.kapook.com/ninn/n19-0111/200111_LiJiAh_01.jpg[/img] Lee Ji Ah ดาราเกาหลี<br> Ah[img]http://www.globalfashionreport.com/inline/fashion/th/94e0b6c1fb1668956f534988e6ef37eb.jpg[/img] Lee Ji Ah<br>http://58.64.30.98/upload/imagesource/1189093858002.jpg<br>[img]http://58.64.30.98/upload/imagesource/1189093858002.jpg[/img] ";

preg_match_all('~\[img\]([^\[]+)\[\/img\]~',$message,$img);

foreach($img [1] as $image){
$path = $image;
}
$showimg = "<img src='$path' />";
echo $showimg;

echo "<br><hr><br>";

?>


หัวข้อ: Re: จะใช้ตัวแปรให้ภาพแสดงได้อย่างไร preg_match_all
เริ่มหัวข้อโดย: pungplai ที่ 05 สิงหาคม 2012, 03:14:39
ได้แล้วครับ เอาภาพแรกเพียงภาพเดียว ใช้ krsort(); เรียงจากมากไปหาน้อย กลับกันซ่ะเลย

โค๊ด:
<?
$message = "ลีจีอา Lee Ji Ah ดาราเกาหลี<br>[img]http://www.pingbook.com/archive/200906241245819327.jpg[/img]ksha;hark[img]http://www.thaiseoboard.com/avatarstorage/xavatar_59490.png.pagespeed.ic.XeO7ovgsVl.png[/img]aaa[img]http://i.kapook.com/ninn/n19-0111/200111_LiJiAh_01.jpg[/img] Lee Ji Ah ดาราเกาหลี<br> Ah[img]http://www.globalfashionreport.com/inline/fashion/th/94e0b6c1fb1668956f534988e6ef37eb.jpg[/img] Lee Ji Ah<br>http://58.64.30.98/upload/imagesource/1189093858002.jpg<br>[img]http://58.64.30.98/upload/imagesource/1189093858002.jpg[/img] ";

preg_match_all('~\[img\]([^\[]+)\[\/img\]~',$message,$img);

krsort($img [1]);
foreach($img [1] as $image){
$path = $image;

}
$showimg = "<img src='$path' />";
echo $showimg;

echo "<br><hr><br>";

?>