GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ถามการอ่านไฟล์ Text แบบยากๆ

อยากให้เขียน php อ่านไฟล์ text ที่มีลักษณะดังนี้ครับ

ตัวอย่างไฟล์

aaa  bbbb           ccccc                    ddd eee          ffffffffffffff
aaa     bbbb       ccccc            ddd eee      ffffffffffffff

aaa  bbbb      ccccc            ddd eee      ffffffffffffff
aaa     bbbb     ccccc       ddd eee      ffffffffffffff


ตัวอย่างไฟล์ สังเกตได้ว่ามี หลายแถวแล้วก็หลายคอลัม จะทำยังไง
ให้เราสามารถ เก็บข้อมูลลงใน database ได้อะครับ

อยากให้เก็บอย่างนี้อะครับ

"INSERT INTO TABLE(data1,data2,data3,data4,data5,data6)VALUES('?????????????????????????????????????')";

จะแยกข้อมูลออกจาก TEXT FILE ได้อย่างไรครับ

17 ก.ค. 2552 6 1,868

เอาหลักการไป

1. อ่านออกเป็นแถวด้วย file()
2. วนลูปแยกแต่ละแถวออกเป็นคอลัมน์ ด้วย explode()

ถ้ารู้จักประยุกต์ใช้คำสั่ง ก็ไม่มีอะไรยาก
#1

รบกวนอีกทีครับ 

$data = "aaa  bbbb           ccccc                              ddddd";

แล้วเราจะตัดได้อย่างไรครับ


$data_ex = explode("????",$data); 

ในเมื่อความยาวของช่องไฟไม่แน่นอนเลย 
 

#2

ใช้ preg_match() หรือใช้ explode() แบบเดิมแหละ แต่วนลูปเอา อันไหนไม่มีค่าก็ไม่ต้องบันทึก

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

ขออภัยท่านอาจารย์ครับที่ทำให้เข้าใจผิด
ไม่ได้มีเจตนาเช่นนั้นครับ

คือไฟล์ที่ถามไม่ได้คิดมาเองครับ พอดีผมต้องทำงานแล้วก็ต้อง Decode ไฟล์การสั่งสินค้าจากลูกค้าครับ
ซึ่งไฟล์ผมได้ลองใส่เป็นภาพมาให้ดูครับ

เดี๋ยวผมจะลองทำตามที่อาจารย์บอกนะครับ ถ้าไม่ได้หรือติดอะไร จะรบกวนถามต่อนะครับ

ลองดูตัวอย่างไฟล์ตามภาพนะครับ

#4

อืม จากรูป เงื่อนไขนี้คงใช้ไม่ได้มั้ง อาจต้องหาตัวเลือกอื่น เนื่องจากมีบางฟิลด์ที่มีช่องว่างภายในฟิลด์ เช่น M IMCTM ซึ่งมีช่องว่างภายในข้อมูล เงื่อไขนี้จะทำให้ตัดคำได้ยาก เนื่องจากโปรแกรมจะแยกแยะไม่ออกว่าส่วนไหนคือข้อความที่ต้องตัด และอีกข้อนึงคือ แต่ละบรรทัดมีข้อมูลไม่เท่ากัน หรืออาจไม่สอดคล้องกัน ก็อาจทำให้การตัดเป็นไปได้ยากมากขึ้น

แนวคิดที่ดีกว่า คือ การเตีรยมข้อมูลเพื่อให้การตัดง่ายขึ้น ซึ่งก็ต้องย้อนกลับไปดูที่แหล่งที่มาของข้อมูล ว่าสามารถเปลี่ยนเป็นรูปแบบอื่นได้หรือไม่ ถ้าได้จะทำให้การทำงานง่ายขึ้นและลดความผิดพลาดของข้อมูลลง เข่น การคัันแต่ละฟิลด์ด้วยตัวคั่นอื่น เช่น data1|data2|data3 ซึ่งการแยกออกเป็น array จะง่ายขึ้นครับ
#5

ขอบคุณครับสำหรับคำตอบ
แต่ยากครับสำหรับให้ทางลูกค้าแก้ข้อมูล เขาอาจจะ export มาจากโปรแกรมอะไรหรือปล่าวก็ไม่ทราบครับ
เดี๋ยวยังไงลองเขียนดูก่อนครับ ถ้าไม่ได้ยังไง จะมาถามใหม่ครับ

ขอบพระคุณ อาจารย์มากครับ
#6
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^