|
|
|
สอบถามการเปรียบเทียบไฟล์คะว่ามีคำที่ซ้ำกันไหม คือทั้งสองไฟลืมีคำที่ซ้ำกัน แต่มันโชว์แค่บางคำ สาเหตุเกิดจากอะไรคะ |
|
|
|
|
|
|
|
ลอง trim ดูหรือยังครับ
|
|
|
|
|
Date :
2012-04-18 23:51:29 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าใน sql statement ลองดูพวก DISTINCT
|
|
|
|
|
Date :
2012-04-19 06:14:44 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง trim ดูแล้วคะ แต่ก็ยังไม่ได้ ไฟล์ที่ใช้เปรียบเทียบเป็น text file คะ
|
|
|
|
|
Date :
2012-04-19 11:20:39 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code?
|
|
|
|
|
Date :
2012-04-19 15:23:24 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โค้ดประมาณนี้คะ รบกวนช่วยดูให้ดวยนะคะ ^^
Code (PHP)
<?
$arr2 = array();
$strFileName = "C:/AppServ/www/swathf/test.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$file = fgets($objFopen, 4096);
//$arr2[] = $file;
array_push( $arr2, $file );
$mystr = " $file";
$absmystr = trim($mystr);
echo "$absmystr มีความยาว " . strlen($absmystr) . " ตัวอักษร<br>";
}
}
fclose($objFopen);
$arr1 = array();
$strFileName = "C:/AppServ/www/swathf/test1.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$file = fgets($objFopen, 4096);
//$arr2[] = $file;
array_push( $arr1, $file );
$mystr = " $file";
$absmystr = trim($mystr);
echo "$absmystr มีความยาว " . strlen($absmystr) . " ตัวอักษร<br>";
}
}
fclose($objFopen);
foreach ( $arr1 as $value1 ) {
foreach ( $arr2 as $value2 ) {
if ( $value1 == $value2 ) {
print "duplicated string is \"".$value1."\"";
}
}
}
?>
|
|
|
|
|
Date :
2012-04-19 20:06:08 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เวลาคุณ array_push คุณไม่ได้ trim แล้วลูปเทียบแบบนั้นก็ใช้ไม่ได้หรอก
Code (PHP)
for($i=0;$i<count($arr1);$i++){
echo $arr1[$i] . (($arr1[$i] == $arr2[$i])? ' เหมือน ' : ' ไม่เหมือน ' . $arr2[$i];
}
ลองอันนี้แทนละกัน
|
|
|
|
|
Date :
2012-04-20 10:48:21 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอโทษนะคะ คุณ PlaKriM โค้ดที่ใช้เทียบ output จะเป็นยังไงคะไม่ค่อยเข้าใจอ่ะคะ คือต้องการให้มันโชว์เฉพาะคำที่เหมือนกันโดยเทียบกับทุกคำใน file ไม่ใช่เทียบแค่ในตำแหน่งเดียวกัน อ่ะคะ รบกวนช่วยด้วยนะคะ มือใหม่จริง ๆ คะ
|
|
|
|
|
Date :
2012-04-20 15:04:34 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
//https://www.thaicreate.com/php/forum/077203.html
$arr2 = array();
$strFileName = "C:/AppServ/www/swathf/test.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr2, $contents);
echo "$contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
}
}
fclose($objFopen);
$arr1 = array();
$strFileName = "C:/AppServ/www/swathf/test1.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr1, $contents);
echo "$contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
}
}
fclose($objFopen);
foreach ( $arr1 as $value1 ) {
foreach ( $arr2 as $value2 ) {
if ( $value1 == $value2 ) {
print "duplicated string is \"".$value1."\"";
}
}
}
?>
|
|
|
|
|
Date :
2012-04-20 15:46:31 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรืออาจจะลองแบบนี้
$content = trim(fgets($objFopen, 4096) , "\t\n\r\0 ");
|
|
|
|
|
Date :
2012-04-20 15:52:07 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแล้วนะคะ ความยาวตัวอักษรของคำที่เหมือนกันแต่ละไฟล์ ยังไม่เท่ากันอ่ะคะ คำที่ซ้ำกันบางคำก็เลยยังไม่โชว์ ต้องแก้ที่การตัดช่องว่าง หรือที่การเปรียบเทียบคำในแต่ไฟล์ รบกวนแนะนำด้วยนะคะ
|
|
|
|
|
Date :
2012-04-20 16:24:31 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผลลัพธ์จากการรันโค้ดครับ
1.) มหาวิทยาลัย มีความยาว 33 ตัวอักษร
2.) ได้รับทุน มีความยาว 27 ตัวอักษร
3.) วิจัย มีความยาว 15 ตัวอักษร
4.) ผลงาน มีความยาว 15 ตัวอักษร
5.) วิชาการ มีความยาว 21 ตัวอักษร
6.) จาก มีความยาว 9 ตัวอักษร
7.) บริษัท มีความยาว 18 ตัวอักษร
8.) เอกชน มีความยาว 15 ตัวอักษร
9.) ทางด้าน มีความยาว 21 ตัวอักษร
10.) ซอฟท์แวร์ มีความยาว 27 ตัวอักษร
11.) คอมพิวเตอร์ มีความยาว 33 ตัวอักษร
12.) มหาวิทยาลัย มีความยาว 33 ตัวอักษร
13.) ได้รับทุน มีความยาว 27 ตัวอักษร
14.) บัณฑิต มีความยาว 18 ตัวอักษร
15.) คอมพิวเตอร์ มีความยาว 33 ตัวอักษร
16.) เอกชน มีความยาว 15 ตัวอักษร
17.) ศูนย์วิจัย มีความยาว 30 ตัวอักษร
18.) ผลงาน มีความยาว 15 ตัวอักษร
19.) วิชาการ มีความยาว 21 ตัวอักษร
20.) เทคโนโลยี มีความยาว 27 ตัวอักษร
duplicated string is "มหาวิทยาลัย"
duplicated string is "ได้รับทุน"
duplicated string is "คอมพิวเตอร์"
duplicated string is "เอกชน"
duplicated string is "ผลงาน"
duplicated string is "วิชาการ"
ส่วนโค้ดผมก็ไม่ได้แก้ไขอะไรที่เป็นสาระสำคัญเลยครับ
Code (PHP)
$no=1;
$arr2 = array();
$strFileName = "compare-text1.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr2, $contents);
echo "$no.) $contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
$no++;
}
}
fclose($objFopen);
$arr1 = array();
$strFileName = "compare-text2.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr1, $contents);
echo "$no.) $contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
$no++;
}
}
fclose($objFopen);
foreach ( $arr1 as $value1 ) {
foreach ( $arr2 as $value2 ) {
if ( $value1 == $value2 ) {
print "duplicated string is \"".$value1."\"<br />\n";
}
}
}
compare-text2.txt
มหาวิทยาลัย
ได้รับทุน
บัณฑิต
คอมพิวเตอร์
เอกชน
ศูนย์วิจัย
ผลงาน
วิชาการ
เทคโนโลยี
compare-text1.txt
มหาวิทยาลัย
ได้รับทุน
วิจัย
ผลงาน
วิชาการ
จาก
บริษัท
เอกชน
ทางด้าน
ซอฟท์แวร์
คอมพิวเตอร์
แต่ไฟล์ทั้งสองตัวผมสร้างใน notepad++ และเข้ารหัส utf-8 without BOM
|
|
|
|
|
Date :
2012-04-20 20:39:07 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 ตัวอักษรใน UTF8 จะเท่ากับ 3bytes ครับ
เพราะฉะนั้น คำว่า วิจัย จึงมีความยาว 15 ไบท์ครับ
|
|
|
|
|
Date :
2012-04-20 20:41:27 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วคะ ขอบคุณมากนะคะ สาเหตุน่าจะเกิดจากการสร้างไฟล์ใน notepad ธรรมดา และเข้ารหัส utf-8 ทำให้ความยาวของแต่ละคำเพี้ยน ๆ อ่ะคะ
|
|
|
|
|
Date :
2012-04-21 00:11:35 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนถามอีกอย่างนะคะ ถ้าไฟล์ที่ใช้เปรียบเทียบมีข้อมูลลักษณะนี้
test1.txt
พญาไท//loc
กรุงเทพฯ//loc
กลุ่มประเทศอาเซียน//loc
ประเทศออสเตรเลีย//loc
ญี่ปุ่น//loc
ไทย//loc
กทม.//loc
คณะผู้ดำเนินการวิจัย//org
สำนักวิจัยฯ//org
ศูนย์สารสนเทศ//org
ที่ประชุม//org
คณะรัฐมนตรี//org
กองบริการเอกสารและห้องสมุด//org
ห้องแล็ป//org
ดร.//title
รศ.//title
ผศ.//title
ศ.//title
นายแพทย์//title
test2.txt
นายแพทย์
กทม.
กล่าว
ใน
ที่ประชุม
รับ
สมัคร
นักศึกษา
คณะ
วิทยาศาสตร์
200
คน
เวลาเปรียบเทียบต้องการให้เปรียบเทียบเฉพาะข้อความอ่ะคะ ไม่รวมแท็กข้างหลัง(//loc) แต่ output ให้โชว์ทั้งข้อความและแท็กเหมือนใน file ที่ 1 อ่ะคะ
output ที่ต้องการ
นายแพทย์//title
กทม.//loc
ที่ประชุม//org
|
|
|
|
|
Date :
2012-04-21 01:17:45 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผลลัพธ์การรันโค้ดครับ
1.) พญาไท//loc มีความยาว 20 ตัวอักษร
2.) กรุงเทพฯ//loc มีความยาว 29 ตัวอักษร
3.) กลุ่มประเทศอาเซียน//loc มีความยาว 59 ตัวอักษร
4.) ประเทศออสเตรเลีย//loc มีความยาว 53 ตัวอักษร
5.) ญี่ปุ่น//loc มีความยาว 26 ตัวอักษร
6.) ไทย//loc มีความยาว 14 ตัวอักษร
7.) กทม.//loc มีความยาว 15 ตัวอักษร
8.) คณะผู้ดำเนินการวิจัย//org มีความยาว 65 ตัวอักษร
9.) สำนักวิจัยฯ//org มีความยาว 38 ตัวอักษร
10.) ศูนย์สารสนเทศ//org มีความยาว 44 ตัวอักษร
11.) ที่ประชุม//org มีความยาว 32 ตัวอักษร
12.) คณะรัฐมนตรี//org มีความยาว 38 ตัวอักษร
13.) กองบริการเอกสารและห้องสมุด//org มีความยาว 83 ตัวอักษร
14.) ห้องแล็ป//org มีความยาว 29 ตัวอักษร
15.) ดร.//title มีความยาว 14 ตัวอักษร
16.) รศ.//title มีความยาว 14 ตัวอักษร
17.) ผศ.//title มีความยาว 14 ตัวอักษร
18.) ศ.//title มีความยาว 11 ตัวอักษร
19.) นายแพทย์//title มีความยาว 31 ตัวอักษร
20.) มหาวิทยาลัย มีความยาว 33 ตัวอักษร
21.) ได้รับทุน มีความยาว 27 ตัวอักษร
22.) วิจัย มีความยาว 15 ตัวอักษร
23.) ผลงาน มีความยาว 15 ตัวอักษร
24.) วิชาการ มีความยาว 21 ตัวอักษร
25.) จาก มีความยาว 9 ตัวอักษร
26.) บริษัท มีความยาว 18 ตัวอักษร
27.) เอกชน มีความยาว 15 ตัวอักษร
28.) ทางด้าน มีความยาว 21 ตัวอักษร
29.) ซอฟท์แวร์ มีความยาว 27 ตัวอักษร
30.) คอมพิวเตอร์ มีความยาว 33 ตัวอักษร
31.) นายแพทย์ มีความยาว 24 ตัวอักษร
32.) กทม. มีความยาว 10 ตัวอักษร
33.) กล่าว มีความยาว 15 ตัวอักษร
34.) ใน มีความยาว 6 ตัวอักษร
35.) ที่ประชุม มีความยาว 27 ตัวอักษร
36.) รับ มีความยาว 9 ตัวอักษร
37.) สมัคร มีความยาว 15 ตัวอักษร
38.) นักศึกษา มีความยาว 24 ตัวอักษร
39.) คณะ มีความยาว 9 ตัวอักษร
40.) วิทยาศาสตร์ มีความยาว 33 ตัวอักษร
41.) 200 มีความยาว 3 ตัวอักษร
42.) คน มีความยาว 6 ตัวอักษร
43.) บัณฑิต มีความยาว 18 ตัวอักษร
44.) ได้รับทุน มีความยาว 27 ตัวอักษร
45.) คอมพิวเตอร์ มีความยาว 33 ตัวอักษร
46.) เอกชน มีความยาว 15 ตัวอักษร
47.) มหาวิทยาลัย มีความยาว 33 ตัวอักษร
48.) ศูนย์วิจัย มีความยาว 30 ตัวอักษร
49.) ผลงาน มีความยาว 15 ตัวอักษร
50.) วิชาการ มีความยาว 21 ตัวอักษร
51.) เทคโนโลยี มีความยาว 27 ตัวอักษร
duplicated string is "กทม.//loc"
duplicated string is "ที่ประชุม//org"
duplicated string is "นายแพทย์//title"
duplicated string is "มหาวิทยาลัย"
duplicated string is "ได้รับทุน"
duplicated string is "ผลงาน"
duplicated string is "วิชาการ"
duplicated string is "เอกชน"
duplicated string is "คอมพิวเตอร์"
Code (PHP)
$no=1;
$arr1 = array();
$strFileName = "compare-text1.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr1, $contents);
echo "$no.) $contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
$no++;
}
}
fclose($objFopen);
echo "<hr />";
$arr2 = array();
$strFileName = "compare-text2.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$contents = trim(fgets($objFopen, 4096));
array_push( $arr2, $contents);
echo "$no.) $contents มีความยาว " . strlen($contents) . " ตัวอักษร<br>";
$no++;
}
}
fclose($objFopen);
echo "<hr />";
foreach ( $arr1 as $value1 ) {
foreach ( $arr2 as $value2 ) {
$competitor = explode("/",$value1);
if ( $competitor[0] == $value2 ) {
print "duplicated string is \"".$value1."\"<br />\n";
}
}
}
compare-text1.txt
พญาไท//loc
กรุงเทพฯ//loc
กลุ่มประเทศอาเซียน//loc
ประเทศออสเตรเลีย//loc
ญี่ปุ่น//loc
ไทย//loc
กทม.//loc
คณะผู้ดำเนินการวิจัย//org
สำนักวิจัยฯ//org
ศูนย์สารสนเทศ//org
ที่ประชุม//org
คณะรัฐมนตรี//org
กองบริการเอกสารและห้องสมุด//org
ห้องแล็ป//org
ดร.//title
รศ.//title
ผศ.//title
ศ.//title
นายแพทย์//title
มหาวิทยาลัย
ได้รับทุน
วิจัย
ผลงาน
วิชาการ
จาก
บริษัท
เอกชน
ทางด้าน
ซอฟท์แวร์
คอมพิวเตอร์
compare-text2.txt
นายแพทย์
กทม.
กล่าว
ใน
ที่ประชุม
รับ
สมัคร
นักศึกษา
คณะ
วิทยาศาสตร์
200
คน
บัณฑิต
ได้รับทุน
คอมพิวเตอร์
เอกชน
มหาวิทยาลัย
ศูนย์วิจัย
ผลงาน
วิชาการ
เทคโนโลยี
|
|
|
|
|
Date :
2012-04-21 11:47:34 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สมัครสมาชิกเวบเถอะครับ
อย่าเป็นแค่ guest เลย
|
|
|
|
|
Date :
2012-04-21 12:01:51 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$file1 = "file1.txt";
$file2 = "file2.txt";
$data1 = file_get_contents($file1);
$data2 = file_get_contents($file2);
$array1 = explode("\r\n", $data1);
$array2 = explode("\r\n", $data2);
print_r($array1);
echo "<br/><br/>";
print_r($array2);
foreach($array1 as $text)
{
$text = preg_replace('/\/\/[a-z]+/i', "", $text);
echo '<br/>'.$text;
if(in_array($text, $array2))
{
echo ' is duplicated.';
}
}
แก้ตัวที่ตีโจทย์ผิด เขียนให้อีกแบบครับ
|
|
|
|
|
Date :
2012-04-21 18:13:56 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เยี่ยมครับ ดูเทพกว่าผมเยอะเลย... ฮ่าๆๆๆ
|
|
|
|
|
Date :
2012-04-21 20:31:22 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากนะคะ ^^
|
|
|
|
|
Date :
2012-04-21 21:49:46 |
By :
กิ๊ก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนพี่ ๆ อีกนิดนะคะ จากโค้ดนี้
foreach ( $arr1 as $value1 ) {
foreach ( $arr2 as $value2 ) {
$competitor = explode("/",$value1);
if ( $competitor[0] == $value2 ) {
print "duplicated string is \"".$value1."\"<br />\n";
}
}
}
ต้องการให้มันค้นหาคำว่า "วันที่" จาก $arr2 ถ้าเจอให้นำตัวเลขหลังคำว่าวันที่ไปเทียบใน $arr1แล้วแสดงออกมา แต่ตัวเลขที่ไม่ได้อยู่หลังคำว่าวันที่ ไม่ต้องนำไปเทียบใน $arr1 ช่วยแนะนำหน่อยนะคะ ขอบคุณคะ
|
|
|
|
|
Date :
2012-05-03 15:59:37 |
By :
Butterney |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|