 |
|
|
 |
 |
|
Code (PHP)
$fp = fopen('test.txt', 'r');
// ข้อมูลทั้งหมด
$data = fread($fp, filesize('test.txt'));
// แยกบรรทัด
$lines = preg_split('/\n/', $data);
$wanted = array();
foreach ($lines as $line)
{
$tmp = trim(preg_replace('/test\s(.*)/', '$1', $line));
if ( ! in_array($tmp, $wanted))
{
$wanted[] = $tmp;
}
}
print_r($wanted);
http://gunner.freetzi.com
|
 |
 |
 |
 |
Date :
2010-07-15 14:01:39 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่เอี่ยวครับพี่ช่วยอธิบาย pattern ตรง preg_split กับ preg_replace หน่อยได้ไหมครับ
|
 |
 |
 |
 |
Date :
2010-07-15 14:13:19 |
By :
loo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
\n คือการตัดบรรทัดครับ โดยใช้ การขึ้นบรรทัดใหม่ ถ้าเป็นระบบปฏิบัติการ unix ให้ใช้ \n วินโดวส์ ให้ใช้ \r\n แมคอินทอชให้ใช้ \r
ส่วนตรง preg_replace นั้นคือการแคปเจอ ตัวที่พบ (ส่วนรูปแบบต่าง ไปศึกษาเอง ไม่ยาก แต่ก็งง^^) คือใช้() แคปเจอร์ และ $1 คือแบกรีเฟอเรนซ์ครับ
ขอแก้โค้ดหน่อย บางทีอาจไม่มี หลัง test ก็ได้ (กันไวก่อน)
Code (PHP)
$fp = fopen('test.txt', 'r');
// ข้อมูลทั้งหมด
$data = fread($fp, filesize('test.txt'));
// แยกบรรทัด
$lines = preg_split('/\n/', $data);
$wanted = array();
foreach ($lines as $line)
{
$wanted[] = trim(preg_replace('/test\s(.+)/', '$1', $line));
}
$wanted = array_unique($wanted);
print_r($wanted);
|
 |
 |
 |
 |
Date :
2010-07-15 14:22:56 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่เอี่ยวครับแล้วถ้าใน text file ผมมีขอมูลอันอื่นนอกเหนือจากที่ผมโพสต์แล้วต้องการให้มันโชว์แค่ pl ถึง mkp เท่านั้นอะครับจะตัดมันออกยังไงอะครับพี่
|
 |
 |
 |
 |
Date :
2010-07-15 14:41:43 |
By :
loo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเอาตัวอย่างมาคับ ลองทำไฟล์มาและความต้องการมา ไม่แน่ว่า regex อาจใช้ไม่ได้ หรือผมอาจทำไม่ได้ ^^
|
 |
 |
 |
 |
Date :
2010-07-15 14:45:43 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เช่น
test pl
abc:1.423 olp:2.233
test lo
tbc:1.423 tlp:2.233
test 123
abc:1.423 olp:2.233
test mkp
test pl
test lo
test 123
test mkp
อย่างงี้อะครับพี่เอี่ยวถ้าต้องการแค่
pl
lo
123
mkp
อะครับพี่
|
 |
 |
 |
 |
Date :
2010-07-15 14:49:56 |
By :
loo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$fp = fopen('test.txt', 'r');
// ข้อมูลทั้งหมด
$data = fread($fp, filesize('test.txt'));
// แยกบรรทัด
$lines = preg_split('/\n/', $data);
$wanted = array();
foreach ($lines as $line)
{
if ( ! preg_match('/test\s.+/', $line))
continue;
$wanted[] = trim(preg_replace('/test\s(.+)/', '$1', $line));
}
$wanted = array_unique($wanted);
echo join('<br />', $wanted);
|
 |
 |
 |
 |
Date :
2010-07-15 14:56:55 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สุดยอดเลยครับพี่ขอบุณพี่มากจริงๆครับคือพี่มีเว็บเกี่ยวกับการใช้ pattern ใน preg ไหมครับว่าแต่ละอันมันคืออะไรเช่น \s + ... อะไรพวกนี้อะครับ
|
 |
 |
 |
 |
Date :
2010-07-15 15:05:53 |
By :
loo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มีคับ เสิร์จ เลย มีเยอะแยะ
ลองคีย์เวิร์ด
regex howto ดูคับ
|
 |
 |
 |
 |
Date :
2010-07-19 15:22:05 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|