Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > รบกวนถามเรื่อง preg_match() แล้วลบข้อมูลทั้งบรรทัดค่ะ



 

รบกวนถามเรื่อง preg_match() แล้วลบข้อมูลทั้งบรรทัดค่ะ

 



Topic : 106909



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook



รบกวนถามหน่อยค่ะ คือไฟล์ test.php ใช้วิธีการเขียนไฟล์ โดยอ่านข้อมูลเดิมและเขียนต่อข้างล่างลงไปเรื่อยๆอะค่ะ (write mode : a+)

ปกติ ก็จะเป็นวันที่ ไล่เรียงลงไปเรื่อยค่ะ แต่ถ้าเกิดตัวแปร $i ซ้ำกับวันที่ที่มีอยู่ในไฟล์ test.php อยู่แล้ว เช่น $i = 2014-03-14 ดังภาพ


ต้องการตัดที่อยู่ในกรอบสีแดงออก

ถ้า Playlist name เป็นของวันที่ 2014-03-14 (โดยไม่สนเลข _Pl ที่อยู่หลัง 2014-03-14)

ต้องการลบทั้งหมดที่อยู่ใน แท็ก <playlist> "ทุกแถว" (ทั้งหมดในกรอบสีแดงตามภาพด้านบน)


ต่อมา เมื่อลบแล้ว..

ต้องการนำข้อมูลใหม่ ซึ่งก็คือ <playlist> ที่มี $i = 2014-03-14 มา "แทนที่" (ไม่ใช่ต่อท้ายสุด) ในจุดที่โดนลบออกไปนั่นเอง

*ซึ่งจำนวนแถวที่ลบกับจำนวนแถวที่มาเพิ่มอาจจะไม่เท่ากัน อาจจะมากหรือน้อยกว่าก็ได้ เช่น ลบออกไป 4 playlist ต้องการแทนที่ด้วย 2 playlist


แทนที่ playlist

เลยไม่มั่นใจว่าต้องใช้ preg_match() ยังไง หรือใช้วิธีไหนคะ เคยแต่แทนที่ด้วยตัวอักษรสั้นๆ ที่จำนวนแถวเท่ากัน ในแต่ละจุด

รบกวนพี่ๆทุกคนหน่อยนะคะ ขอบคุณมากค่ะ ^^




Tag : PHP, HTML/CSS, JavaScript, jQuery









ประวัติการแก้ไข
2014-03-14 17:26:02
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-03-14 17:25:18 By : ribbonjung View : 1435 Reply : 10
 

 

No. 1

Guest


ลองเอาอันนี้ไปปรับดู

Code (PHP)
$x = '<form class="navbar-search" id="topsearch" action="/search.php">
      <input type="hidden" name="show" value="quickref">
      <input type="hidden" name="pattern" class="search-query" placeholder="Search" accesskey="s">
    </form>';
	
$patt = '/<input type="(hidden)" name="show" value="quickref">/'; // แทน <input type="(hidden)" name="show" value="quickref"> ที่มี type="hidden" (hidden) คือตัวบอก

$replace = 'test';

$p = preg_replace($patt,$replace,$x);

echo htmlspecialchars($p);







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-14 19:53:59 By : โปรแกรมมั่ว
 


 

No. 2



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : โปรแกรมมั่ว เมื่อวันที่ 2014-03-14 19:53:59
รายละเอียดของการตอบ ::
ลองทำแล้วไม่ได้ค่ะ แต่ไม่แน่ใจว่าเข้าใจถูกรึเปล่า รบกวนอธิบายในแต่ละบรรทัดอย่างละเอียดหน่อยนะคะ พอดีมือใหม่ค่ะ


$x = '<form class="navbar-search" id="topsearch" action="/search.php">
      <input type="hidden" name="show" value="quickref">
      <input type="hidden" name="pattern" class="search-query" placeholder="Search" accesskey="s">
    </form>';


เข้าใจว่า $x เป็นตัวที่ใช้ในการค้นหาแถวที่มี "2014-03-14" งั้นตรง value ต้องเปลี่ยนเป็น value="2014-03-14" ใช่มั้ยคะ
ส่วน search.php << คือไฟล์ที่ต้องการ search วันที่ <playlist> ซึ่งก็คือ Channel.txt
แล้วต้องแกไขส่วนอื่นอีกตรงไหนบ้างคะ รบกวนหน่อยค่ะ


$patt = '/<input type="(hidden)" name="show" value="quickref">/'; // แทน <input type="(hidden)" name="show" value="quickref"> ที่มี type="hidden" (hidden) คือตัวบอก

$replace = 'test';

$p = preg_replace($patt,$replace,$x);

echo htmlspecialchars($p);


ไม่เข้าใจ comment ของ $patt ค่ะ และเข้าใจว่า $replace = $txt_new ซึ่งก้อคือข้อมูลชุดใหม่ของวันที่ 2014-03-14 ใส่ลงไป ต้องปรับแก้ตรงไหนอีกบ้างคะ ขอบคุณที่ช่วยเหลือค่ะ



ประวัติการแก้ไข
2014-03-17 12:39:03
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-17 11:58:10 By : ribbonjung
 

 

No. 3



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

สังเกตุดูแล้ว ในไฟล์ มีบรรทัดว่าง ถ้าใช้ให้เป็นประโยชน์ จะทำให้เขียนด้วยวิธีที่ง่ายขึ้นได้คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-17 13:07:03 By : pjgunner.com
 


 

No. 4



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ตอบความคิดเห็นที่ : 3 เขียนโดย : pjgunner.com เมื่อวันที่ 2014-03-17 13:07:03
รายละเอียดของการตอบ ::
ขอบคุณมากค่ะ ตอนนี้สามารถ replace 2014-03-14 อันใหม่ไปวางในบรรทัดว่างได้ แต่ก็ยังระบุบรรทัดไม่ได้ เนื่องจากโค๊ดพบบรรทัดว่างของวันอื่นๆก่อนที่จะถึง 2014-03-14

และยังไม่สามารถลบแท็ก <playlist> ทั้งหมดที่เป็นของวันที่ 2014-03-14 ได้เลยค่ะ พอดีมือใหม่

รบกวนขอเป็นตัวอย่างโค๊ดในการลบ ทั้ง <playlist> ที่เป็นของ 2014-03-14 ได้มั้ยคะ จะได้ลองเอามาประยุกต์ดู

ขอบคุณมากๆเลยค่ะ หัดใหม่ ยังมึนๆงงๆค่ะ T_T


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-18 11:22:12 By : ribbonjung
 


 

No. 5



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

อ่าคับ วิธีง่ายๆ ให้ loop replace ด้วย บรรทัดว่าง

หาบรรทัดว่างที่มากที่สุดแล้วรีเพลส หากเจอตามด้านบน

พอดีไม่ได้เขียนโค้ดนานไปหน่อยนะ มีอยู่คับ ประมาณนี้ มันจะมี ตัวอักษรอะไรก็ได้ ไปถึง </playlist> ให้ไปหาอ่านเอาเองนะ
'/<playlist\sname="'.$i.'.+<\/playlist>/'
ไม่ก็ [^<\/]+

มั่วๆ นะ ปรกติ regex ผมก็มั่วๆ เอาจะพบว่าตัวเองลืมอะไรไป

อีกอย่างเรื่องบรรทัดว่าง ผมไม่แน่ใจว่าต้นฉบับทำแบบไหน
ระหว่างวันที่ ให้มีไว้ 1 บรรทัดว่าง

หากรีเพลสแล้วจะได้สองหรือ มากกว่านั้น
ให้หาบรรทัดว่างที่มากกว่า 1 บรรทัดแล้วรีเพลสข้อมูลใหม่ลงไป

หรืออีกแบบจะใช้แบบค้นหาตำแหน่งเอาก็ได้ ตำแหน่งแรกคือต้นของวันที่ ตำแหน่งสุดท้ายคือ บรรทัดว่าง


ประวัติการแก้ไข
2014-03-18 14:30:23
2014-03-18 14:32:48
2014-03-18 14:33:47
2014-03-18 14:35:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-18 14:26:52 By : pjgunner.com
 


 

No. 6



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ตอบความคิดเห็นที่ : 5 เขียนโดย : pjgunner.com เมื่อวันที่ 2014-03-18 14:26:52
รายละเอียดของการตอบ ::
อ่อ ขอบคุณมากๆๆๆนะคะ ^^

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-18 15:50:57 By : ribbonjung
 


 

No. 7

Guest


ไม่เข้ามาหลายวัน

โค๊ด
Code (PHP)
$x = '<form class="navbar-search" id="topsearch" action="/search.php">
      <input type="hidden" name="show" value="quickref">
      <input type="hidden" name="pattern" class="search-query" placeholder="Search" accesskey="s">
    </form>';
	
$patt = '/<input type="(hidden)" name="show" value="quickref">/'; // แทน <input type="(hidden)" name="show" value="quickref"> ที่มี type="hidden" (hidden) คือตัวบอก

$replace = 'test';

$p = preg_replace($patt,$replace,$x);

echo htmlspecialchars($p);



$x คือ ข้อมูล มันก็คือ ตัวหนังสือทุกตัวใน Channel.txt

Code (PHP)
$x = file_get_contents('Channel.txt'); // อ่านไฟล์ Channel.txt  เก็บข้อมูลไว้ใน $x




$patt คือ pattern ที่คุณต้องการค้นหา เช่น คุณต้องการค้นหา <playlist name="2014-11-11_xxx"> อะไรก็แล้วแต่ </playlist> ที่ name="2014-11-11_xxx"

Code (PHP)
$patt = '/<playlist name="(2014-11-11)_xxx"> อะไรก็แล้วแต่ <\/playlist>/';  // (2014-11-11) บอกว่าต้องการค้นหาที่มี 2014-11-11


$replace คือ ข้อมูลที่จะเอาไปแทนที่ เช่นจะแทนที่ด้วย <playlist name="2014-12-15_xxx"> อะไรก็แล้วแต่ </playlist>
Code (PHP)
$replace = '<playlist name="2014-12-15_xxx"> อะไรก็แล้วแต่ </playlist>';



$p = preg_replace($patt,$replace,$x); คือ ค้นอะไรที่เหมือนกับ $patt ใน $x แล้ว แทนที่ดี $replace

Code (PHP)
$x = file_get_contents('Channel.txt');
	
$patt = '/<playlist name="(2014-11-11)_xxx"> อะไรก็แล้วแต่ <\/playlist>/'; 

$replace = '<playlist name="'.$i.'_xxx"> อะไรก็แล้วแต่ </playlist>'; // $i = 2014-03-14 

$p = preg_replace($patt,$replace,$x);  // $p จะเก็บค่าใหม่ของ $x

echo htmlspecialchars($p);


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-18 22:46:58 By : โปรแกรมมั่ว
 


 

No. 8



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : โปรแกรมมั่ว เมื่อวันที่ 2014-03-18 22:46:58
รายละเอียดของการตอบ ::
ขอบคุณค่ะ ละเอียดมากเลย สอบถามอีกนิดนึงค่ะ

$patt = '/<playlist name="(2014-11-11)_xxx"> อะไรก็แล้วแต่ <\/playlist>/';  // (2014-11-11) บอกว่าต้องการค้นหาที่มี 2014-11-11


โค๊ดนี้หมายความว่า $patt จะ = playlist name ทุกอันที่มีตัวเลข (2014-11-11) แม้ว่า _xxx หรือตรง "อะไรก็แล้วแต่" จะไม่เหมือนกันใช่มั้ยคะ

เช่น

<playlist name="2014-12-11_001"> A </playlist>
<playlist name="2014-12-11_002"> B </playlist>

<playlist name="2014-12-12_003"> C </playlist>

<playlist name="2014-12-15_001"> D </playlist>


$patt จะ = ทุกบรรรทัดที่มี (2014-11-11) แม้ว่าส่วนอื่นจะไม่เหมือนกัน ก็จะได้
<playlist name="2014-12-11_001"> A </playlist>
<playlist name="2014-12-11_002"> B </playlist>


เข้าใจถูกมั้ยคะ? ขอบคุณมากนะคะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-21 12:09:58 By : ribbonjung
 


 

No. 9



โพสกระทู้ ( 437 )
บทความ ( 3 )



สถานะออฟไลน์


ใช่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-21 12:54:02 By : randOmizE
 


 

No. 10



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ตอบความคิดเห็นที่ : 9 เขียนโดย : randOmizE เมื่อวันที่ 2014-03-21 12:54:02
รายละเอียดของการตอบ ::
ขอบคุนมากค๊า แลดูง่ายขึ้นมาทันที 55

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-21 16:19:37 By : ribbonjung
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนถามเรื่อง preg_match() แล้วลบข้อมูลทั้งบรรทัดค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่