ทางบ้านถามเข้ามาหลายท่าน ผมจึงเขียนออกมาได้แบบนี้ครับ
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Swath Web</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="Vee Satayamas">
</head>
<body>
<form method="post">
<textarea name="input_text" cols="80" rows="10"></textarea>
<input type="submit" value="submit">
</form>
<?php
function swath($input_text)
{
$input_filename= tempnam("/tmp", "swath_");
$output_filename= tempnam("/tmp", "swath_");
$input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
file_put_contents($input_filename, $input_text_tis620);
system("/usr/bin/swath < $input_filename > $output_filename");
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv("TIS-620", "UTF-8", $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split('/\|/', $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(" ", $output);
}
?>
</body>
</html>
แต่ว่าแบบนี้เราต้องลง swath ไว้ใน /usr/bin นะครับ ฯ ลงไว้ที่อื่นก็ไม่น่าเป็นไรนะครับ เปลี่ยนใน code เอาเลยก็ได้ ฯ อีกอย่างคือต้องการใช้ iconv ด้วย ฯ แต่ถ้าไม่ใช้ iconv ก็น่าจะได้อีกเหมือนกัน ฯ เปลี่ยนหน้าเว็บเป็น TIS-620 ให้หมดก็น่าจะใช้ได้เลย ฯ
ไม่ทราบว่า inputที่post เข้าไปใน text box มันจะเข้าไปเก็บไว้ที่ไหนคะ แล้วผลลัพธ์ที่ได้มันจะแสดงให้หน้าเว็บเลยมั้ยคะ
ลองทำดูแล้วแต่ไม่เกิดอะไรขึ้นเลย หากมี swath อยู่ในไดรว์ C:\appserv\www\test\swath จะต้องแก้ไข
system(“/usr/bin/swath $output_filename”); อย่างไรคะ
และต้องแก้ไขส่วนอื่นๆอีกหรือเปล่าคะ เช่น $input_filename กับ $output_file หรือเปล่าคะ
ขอบคุณคะ
ความเห็น โดย ann — ธันวาคม 23, 2010 @ 3:42 pm
ชื่อไฟล์มันไม่แน่นอนครับ แต่จะอยู่ใน $input_filename ครับ ลอง echo ออกมาดูได้ ฯ ที่ไม่แน่นอนนี้ก็เพราะว่าบน server อาจจะมีโปรแกรมนี้ทำงานพร้อมกัน ถ้าชื่อเหมือนกันมันอาจจะไปตีกันได้ ฯ แก้เป็น system(“C:\appserv\www\test\swath < $input_filename > $output_filename”); น่าจะพอครับ ฯ
ความเห็น โดย वीर — ธันวาคม 23, 2010 @ 3:47 pm
ผมลองเขียนโค้ดข้างในฟังก์ชั่น swatch ประมาณนี้ครับ
function swath($input_text)
{
$input_filename= tempnam(“/tmp”, “swath_”);
$output_filename= tempnam(“/tmp”, “swath_”);
$input_text = iconv(‘UTF-8′, ‘TIS-620′, trim($input_text));
file_put_contents($input_filename, $input_text);
system(SWATH . ‘/swath.exe -b “|” -d ‘ . SWATH . ‘/swath -m long ‘ . “C:\AppServ\www\trimWord\swath\b.txt”);
$raw = file_get_contents($output_filename);
$raw = iconv(‘TIS-620′, ‘UTF-8′, rtrim($raw));
$raw = preg_replace(‘/| |/’, ‘|’, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/|/’, $raw, -1, PREG_SPLIT_NO_EMPTY);
}
ส่วนตรงอื่นๆผมเหมือนข้างบนตามหัวข้อครับ แต่ผลยังไม่ออกมา เลยอยากทราบว่าต้องแก้ตรงไหนอย่างไรบ้างครับ
พอดีว่าไฟล์ที่ใช้ I/O ผมชื่อ a, b.txt น่ะครับ แล้วในส่วนของโฟลเดอร์ Swath ที่ผมดาวน์โหลดมา(ที่ข้างในมีไฟล์ swath.exe และมีโฟลเดอร์ที่ชื่อ data อยู่น่ะครับ) ต้องวางไว้ที่ไหนบ้างครับ แล้วไฟล์มันต้องมีไฟล์อะไรบ้างอยู่ข้างในน่ะครับ
ขอบคุณล่วงหน้าครับ
ความเห็น โดย ธนาวุฒิ (หนุ่ย) — กันยายน 26, 2011 @ 3:25 pm
/swath.exe นี่แปลกๆ อะครับ / ไม่น่าจะเป็นอย่างอื่น
ความเห็น โดย वीर — กันยายน 26, 2011 @ 6:50 pm
ขอโทษนะครับ ไม่ค่อยเข้าใจน่ะครับ ต้องแก้เป็นอย่างไรเหรอครับ
ความเห็น โดย nui — กันยายน 26, 2011 @ 11:11 pm
ลองใช้ full path ของ swath ดูครับ
ความเห็น โดย वीर — กันยายน 28, 2011 @ 1:38 am
สามาใช้กับ windows7 ได้รึเปล่าคะ
ความเห็น โดย Ae — ตุลาคม 24, 2011 @ 11:35 am
ใช้กับ windows ต้องแก้ path ครับ
ความเห็น โดย वीर — ตุลาคม 24, 2011 @ 10:42 pm
ใช้ swath บน windows ต้องแก้ path ตรงไหนบ้างคะ และอยากทราบว่า file input กับ output ต้องชื่อเดียวกันไหมคะ ผลลัพธ์ที่ได้จะแสดงที่ไหนคะบนหน้าเว็บเลยรึเปล่า และเราสามารถ input text file ลงไปได้ไหมคะ โดยที่ไม่ต้องใส่ข้อความ เข้าไปใน text box พอดียังไม่ค่อยเข้าใจอ่ะคะ
ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 2:04 pm
แก้ /usr/bin/swath กับ คำสั่ง tempnam ครับ tempnam นี้ลองตั้งเป็นชื่ออื่นไปเลยก็ได้ครับเช่น $input_filename= “C:\toto.txt”; $output_filename= “C:\tata.txt”; ซึ่งต้องไม่เหมือนกันครับ ส่วนจะเขียนลง path ไหนก็แล้วแต่เรา set permission ไว้ครับ … แต่พอทำได้แล้วค่อมาดูเรื่องสร้าง tempfile อีกทีครับ
ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 2:58 pm
ขอโทษนะคะแก้โค้ดประมาณนี้แล้วคะ แต่ยังไม่แสดงผลลัพธ์ เลยคะ คือผลลัพธ์ที่ได้จะแสดงบนหน้าเว็บเลยรึเปล่าคะ หรือจะแสดงเป็นไฟล์ text เหมือนที่เราเรียกผ่าน command Prompt แล้วเวลาที่เรา input file เราไม่ต้องใส่ข้อมูลใน text box ได้ใช่ไหมคะ ให้มันสามารถเรียกไฟล์ text ที่เรามีอยู่แล้วได้รึเปล่าคะ
function swath($input_text)
{
$input_filename= “C:/swath/news.txt”;;
$output_filename= “C:/swath/outt.txt”;
$input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
file_put_contents($input_filename, $input_text_tis620);
system(“C:/swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(” “, $output);
}
ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 3:44 pm
ลองสั่ง dir C:\swath มาดูหน่อยได้เปล่าครับ? ผมว่า execute table ไฟล์มันไม่น่าไปอยู่ใน C:\ อะครับ .. ลองจาก command line ง่านกว่าครับ เอา if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(” “, $output);
} ออกไปแล้วสั่ง print_r(swath(“ตากลมตากลม”)); ดูเลยครับ
ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 6:39 pm
พี่คะรบกวนอีกนิดนะคะ ช่วยดูโค้ดให้หน่อยนะคะ พอรันแล้วยังไม่มีอะไรขึ้นบนหน้าเว็บเลยคะ แต่มี output ที่เป็น text file ขึ้นใน folder swath ซึ่งใน text ว่างเปล่าคะ น่าจะเกิดจากสาเหตุอะไรคะ
<?php
function swath($input_text)
{
$input_filename= tempnam("/tmp", "swath_");
$output_filename= tempnam("/tmp", "swath_");
$input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
file_put_contents($input_filename, $input_text_UTF8);
system("C:/AppServ/www/swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(“”, $output);
file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));
}
?>
ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:20 pm
ขอโทษนะคะ code นี้คะ ^^
<?php
function swath($input_text)
{
$input_filename= tempnam("/tmp", "swath_");
$output_filename= tempnam("/tmp", "swath_");
$input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
file_put_contents($input_filename, $input_text_UTF8);
system("C:/AppServ/www/swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(“”, $output);
file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));
}
?>
ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:23 pm
เครื่องหมายที่ใช้ redirect หายไปจาก code อะครับ
ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 11:30 pm
เครื่องหมายที่ใช้ redirect คืออะไรคะ ต้องแก้ตรงไหนบ้าง
ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:48 pm
เครื่องหมาย บรรทัดที่สั่ง system ครับ
ความเห็น โดย वीर — กุมภาพันธ์ 23, 2012 @ 4:43 pm
ขอบคุณคะ ได้แล้วนะคะ แต่มันรับข้อมูลจาก text box คืออยากให้มันรับข้อมูลจาก text file ที่เรามีอ่ะคะ ต้อง input ยังไงหรือแก้ไขโค้ดในส่วนไหนคะ ^^
ความเห็น โดย butter — กุมภาพันธ์ 24, 2012 @ 12:12 pm
ผมเองก็มี output.txt ใน C:/AppServ/www/swath แต่ไม่มี text เป็นว่างเปล่าครับ เครื่องหมายที่ใช้ redirect คือตัวไหนครับ ผิดพลาดตรงไหนรบกวนแนะนำด้วยครับ ขอตัวอย่างด้วยนะครับ ขอบคุณมากครับ
โคดครับ
ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:16 pm
ขอโทษด้วยนะครับ
function swath($input_text)
{
$input_filename= tempnam(“/tmp”, “swath_”);
$output_filename= tempnam(“/tmp”, “swath_”);
$input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
file_put_contents($input_filename, $input_text_UTF8);
system(“C:/AppServ/www/swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(“”, $output);
file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));
}
ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:20 pm
C:/AppServ/www/swath $lt < $input_filename > $output_filename
พวกเครื่องหมายมากกว่าน้อยกว่าอะครับ เขียนในนี้มันไม่ค่อยเห็น
ความเห็น โดย वीर — กุมภาพันธ์ 26, 2012 @ 12:42 am
โคดครับ
ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:20 pm
ลบ file_put_contents ออกแล้วแก้ $input_filename ใส่ชื่อไฟล์ที่ต้องการเลยครับ
ความเห็น โดย वीर — กุมภาพันธ์ 26, 2012 @ 12:36 am
รบกวนอีกนะครับ ผมลองแก้แล้ว ยังเป็น text ว่างเปล่า ไม่มีตัวอักษร ผมรบกวนพี่พอจะมีไฟล์ ใช้ Swath จาก PHP ไหมครับ รบกวนส่งมาที่เมล์ lnw_za_@hotmail.com
ขอบคุณครับ
ความเห็น โดย สุเทพ — กุมภาพันธ์ 27, 2012 @ 10:45 am
อันนี้แบบเอามาทั้งไฟล์เลยครับ http://pastebin.com/i7A24xZ6
ความเห็น โดย वीर — กุมภาพันธ์ 27, 2012 @ 4:02 pm
ได้แล้วครับ สงสัยผมอ้าง path ผิด ขอบคุณพี่มากๆเลยนะครับ
ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 27, 2012 @ 8:27 pm
ดีใจด้วยครับ
ความเห็น โดย वीर — กุมภาพันธ์ 27, 2012 @ 8:30 pm
พี่คะ ถ้าต้องการ input file text เข้ามาอ่ะต้องแก้โค้ดยังไงคะ
ความเห็น โดย butter — กุมภาพันธ์ 28, 2012 @ 9:51 pm
บรรทัด system ครับ redirect เข้าไปเลย
ความเห็น โดย वीर — กุมภาพันธ์ 28, 2012 @ 9:52 pm
ขอโทษนะคะพี่ ช่วยดูโค้ดให้หน่อยนะคะ ต้องเพิ่มโค้ดยังไงคะ เพื่อให้มันตัดคำจาก text file ของเราอ่ะ ต้อง input file ตรงไหน ยังไงคะ ลองทำแล้วยังไม่ได้เลยคะ รบกวนด้วยนะคะ ขอบคุณคะ ^^
function swath($input_text)
{
$input_filename= tempnam(“/tmp”, “swath_”);
$output_filename= tempnam(“/tmp”, “swath_”);
$input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
file_put_contents($input_filename, $input_text_tis620);
system(“C:\AppServ\www\swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
if($_REQUEST['input_text']) {
$output = swath($_REQUEST['input_text']);
print implode(“”, $output);
file_put_contents(“C:\AppServ\www\swathf\outputnews.txt”,implode ($output ,”\r\n”));
}
ความเห็น โดย butter — มีนาคม 10, 2012 @ 6:01 pm
ตัดคำที่ไฟล์เดิมตลอดเปล่าครับ? หรือรับ path มาจากไหน?
ความเห็น โดย वीर — มีนาคม 10, 2012 @ 9:02 pm
ไม่ใช่ไฟล์เดิมตลอดคะ input มีหลายไฟล์ รับมาจาก path เดียวกับที่แสดง output คะ รบกวนหน่อยนะคะ
ความเห็น โดย butter — มีนาคม 11, 2012 @ 12:01 am
รับชื่อไฟล์มาทางไหนอะครับ?
ความเห็น โดย वीर — มีนาคม 11, 2012 @ 2:14 pm
ขอโทษนะคะ ไม่ค่อยเข้าใจคำถามคะ ถ้าหมายถึงที่เก็บไฟล์ input คือ C:\AppServ\www\swathf\news.txt
ความเห็น โดย butter — มีนาคม 11, 2012 @ 3:03 pm
โปรแกรมต้องรองรับไฟล์อื่นนอกจาก C:\AppServ\www\swathf\news.txt อีกเปล่าครับ?
ความเห็น โดย वीर — มีนาคม 11, 2012 @ 3:30 pm
ใช่คะ มีไฟล์อื่นที่ต้อง input หลายไฟล์ แต่อยูใน C:\AppServ\www\swath เหมือนกันคะ
ความเห็น โดย butter — มีนาคม 11, 2012 @ 3:59 pm
แบบนี้ต้องรับชื่อไฟล์มาใน function เปล่าครับ? หรือว่าเอามาจากไหน?
ความเห็น โดย वीर — มีนาคม 11, 2012 @ 5:23 pm
น่าจะต้องรับชื่อไฟล์มาใน function คะ
ความเห็น โดย butter — มีนาคม 11, 2012 @ 10:52 pm
งั้นเริ่ม function ด้วย function swath($input_filename) เลยครับ … ไฟล์ที่จะตัดคำใช้ character set แบบไหนอยู่ครับ?
ความเห็น โดย वीर — มีนาคม 12, 2012 @ 10:43 am
ไฟล์ที่จะตัดคำใช้ UTF-8 คะ
ความเห็น โดย butter — มีนาคม 12, 2012 @ 1:29 pm
swath ในเครื่องใช้ option แบบ swath -u ‘u,u’ ได้เปล่าครับ?
ความเห็น โดย वीर — มีนาคม 12, 2012 @ 1:55 pm
ดูยังไงคะ
ความเห็น โดย butter — มีนาคม 12, 2012 @ 2:29 pm
ลองพิมพ์ดูใน cmd (Command Prompt) ครับ … แต่ก่อนพิมพ์ cd ไป folder ที่ swath อยู่ก่อนนะครับ
ความเห็น โดย वीर — มีนาคม 12, 2012 @ 3:31 pm
ดูใน swath –help ได้ครับ มันจะแสดง option ออกมาทั้งหมด (version 0.4.2 นะครับ ผมไม่แน่ใจว่าบน Windows เหมือนกันหรือเปล่า)
ความเห็น โดย वीर — มีนาคม 13, 2012 @ 8:08 am
ไม่น่าจะได้นะคะ เพราะ ลอง swath -help แล้วไม่มี option -u ‘u,u’ นี้เลย
ความเห็น โดย butter — มีนาคม 14, 2012 @ 4:19 pm
งั้นเขียน function swath เหมือนเดิม แล้วเพิ่ม function wordseg_form_file($input_filename) {
return swath(file_get_contents($input_filename));
}
แล้วใช้ wordseg_from_file แทนแล้วกันครับ
ความเห็น โดย वीर — มีนาคม 14, 2012 @ 7:45 pm
ขอโทษนะคะ พี่ช่วยเขียนให้ดูหน่อยนะคะ ยังมะค่อยเข้าใจ เป็นมือใหม่จริง ๆ คะ ^^
ความเห็น โดย butter — มีนาคม 15, 2012 @ 4:05 pm
ใส่ชื่อไฟส์ไปเลยครับ
ความเห็น โดย वीर — มีนาคม 15, 2012 @ 4:15 pm
ใส่ตรง function นี้เลยใช่ไหมคะ function swath($input_text) แล้วตรงเพิ่มตรงไหนอีกรึเปล่าคะ
ความเห็น โดย butter — มีนาคม 15, 2012 @ 11:34 pm
wordseg_from_file ครับ (อันก่อนผมเขียน from ผิดเป็น form)
ความเห็น โดย वीर — มีนาคม 16, 2012 @ 5:34 am
แยกออกมาเป็นอีก function ครับ
ความเห็น โดย वीर — มีนาคม 19, 2012 @ 11:03 am
พี่ช่วยเขียนโค้ดให้ดูเลยได้ไหมคะ พอดีเพิ่งหัดเขียน php อะคะ ยังมะค่อยเก่ง
ความเห็น โดย butter — มีนาคม 29, 2012 @ 12:24 am
ต้องฝึกฝนนะครับ
ความเห็น โดย वीर — มีนาคม 29, 2012 @ 6:13 am
พี่คะ รบกวนช่วยดูโค้ดให้หน่อยนะคะ คือแก้ไขแล้วมันยังไม่ได้จริง ๆ อ่ะคะ คือข้อมูลที่ต้องการเอาไปตัดอยู่ใน ตัวแปร $elem คะ คือ เปลี่ยนจากรับค่าจาก textbox เป็นรับค่าจากตัวแปร $elem อ่ะคะ ต้องแก้ไขโค้ดยังไงคะ ขอบคุณคะ
function swath($input_text)
{
$input_filename= tempnam(“/tmp”, “swath_”);
$output_filename= tempnam(“/tmp”, “swath_”);
$input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
file_put_contents($input_filename, $input_text_tis620);
system(“C:\AppServ\www\swath $output_filename”);
$raw = file_get_contents($output_filename);
$raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
unlink($input_filename);
unlink($output_filename);
return preg_split(‘/\|/’, $raw_utf8);
}
$output = swath( file_get_contents(“$elem”));
//print implode(“”, $output);
file_put_contents(“C:\AppServ\www\swathf\output.txt”,implode ($output,”\r\n”));
ความเห็น โดย butter — พฤษภาคม 14, 2012 @ 12:28 am
ช่วงนี้ยุ่งมากๆ เลยจ้า … เดาว่า swath($elem) นะ
ความเห็น โดย वीर — พฤษภาคม 15, 2012 @ 12:32 am
ไม่ได้อ่ะคะ เอาไว้พี่ว่าง ๆ ช่วยดูให้หน่อยนะคะ
ความเห็น โดย butter — พฤษภาคม 15, 2012 @ 1:57 am