php英文單詞統計器,_PHP教程

來源:互聯網
上載者:User

php英文單詞統計器,


本文執行個體為大家分享了英文單詞統計器php 實現,供大家參考,具體內容如下

程式開始運行, 按"瀏覽"鈕選擇一個英文文檔, 再按"統計 Statistics"鈕, 即可得到按字母順序列出的所有單詞,及其出現的次數
用於測試的資料文檔: data.txt
驅動程式:word.php
output.php 和 StringTokenizer.php 是 要求在同一個檔案夾中的程式
1. words_statistics_PHP.png

2. word.php

<?php/** * 程式開始運行, 按"瀏覽"鈕選擇一個英文文檔, 再按"統計"鈕, * 即可得到按字母順序列出的所有單詞,及其出現的次數 *  * 作者: 許同春 author Tongchun Xu  * @開源中國 Open Source, Chna communiity * 完成日期:2016年6月10日 completion date: 10 June, 2016 */ require("StringTokenizer.php");require("output.php");  if($_POST['submit']){  if ($_FILES["file"]["error"] > 0)  echo "Error: " . $_FILES["file"]["error"] . "
"; else {$myfile = fopen($_FILES["file"]["tmp_name"], "r") or die("Unable to open file!");$str = fread($myfile,filesize($_FILES["file"]["tmp_name"]));$delim = "?\\,. /:!\"()\t\n\r\f%";$st = new StringTokenizer($str, $delim);echo '找到字串: '.$st->countTokens();$list=new LinkedList(); while ($st->hasMoreTokens()) { $list->orderInsert($st->nextToken()); }$list->words_count();$list->traversal();fclose($myfile); }}?>

英文文檔單詞統計 Statistics on English words

程式開始運行, 按"瀏覽"鈕選擇一個英文文檔, 再按"統計 Statistics"鈕, 即可得到按字母順序列出的所有單詞,及其出現的次數

3. output.php

<?/** * The class LinkedList allows an application to store strings in * alphabetical order by calling orderInsert(). * 此處定義的 LinkedList 類,可以調用它的 方法 orderInsert(),來以字母 * 大小的順序儲存 英文字串。 * 同時記錄 英文單詞出現的次數 * 作者: 許同春 author Tongchun Xu  * @開源中國 Open Source, China communiity * 完成日期:2016年6月10日 completion date: 10 June, 2016 */class Node{  public $data;  public $frequency;  public $next;  function __construct($data, $next = null, $frequency = 1){    $this->data = $data; //英文字串    $this->next = $next; //指向後繼結點的指標    $this->frequency=$frequency; //英文字串出現的次數  }  } class LinkedList{  private $head; //單鏈表的頭結點,不儲存資料 function __construct(){//單鏈表的構造方法  //頭結點的資料為"傀儡", 不代表 任何資料  $this->head = new Node("dummy 傀儡");   $this->first = null;  }  function isEmpty(){     return ($this->head->next == null);  }  /* orderInsert($data) 方法,  * 按給定字串 $data 的大小, 將其安插到適當的位置,   * 以保證單鏈表中字串的儲存,始終是有序的。  */ function orderInsert($data){  $p = new Node($data);    if($this->isEmpty()){    $this->head->next = $p;  }  else {  $node= $this->find($data);  if(!$node){  $q = $this->head;  while($q->next != NULL && strcmp($data, $q->next->data)> 0 ){  $q = $q->next;    }    $p->next = $q->next;     $q->next = $p;  }else  $node->frequency++;  } }  function insertLast($data){//將字串插到單鏈表的尾部  $p = new Node($data);     if($this->isEmpty()){    $this->head->next = $p;  }  else{    $q = $this->head->next;    while($q->next != NULL)      $q = $q->next;    $q->next = $p;   }   }   function find($value){//查詢是否有給定的字串    $q = $this->head->next;    while($q->next != null){    if(strcmp($q->data,$value)==0){        break;      }      $q = $q->next;      }    if ($q->data == $value)    return $q;     else    return null;  }   function traversal(){//遍曆單鏈表    if(!$this->isEmpty()){    $p=$this->head->next;    echo "輸出結果:
 
    "; echo "
    "; $n=1; while($p->next != null){ $p=$p->next; echo "
    "; $n++; if ($n%11==0) echo "
   
    "; } echo "
   
".$p->data."
出現次數:".$p->frequency."
".$p->data."
出現次數:".$p->frequency."
"; }else echo "鏈表為空白!"; } function words_count(){ if($this->isEmpty()) echo "
沒有儲存字串
"; else{ $counter=0; $p=$this->head->next; while($p->next != null){ $p=$p->next; $counter++; }; echo "***共有單詞 ".$counter." 個***"; } }} ?>

4. StringTokenizer.php

<?php /** * The string tokenizer class allows an application to break a string into tokens. * * @author Azeem Michael * @example The following is one example of the use of the tokenizer. The code: *  * <?php * $str = "this is:@\t\n a test!"; * $delim = " !@:'\t\n\0"; // remove these chars * $st = new StringTokenizer($str, $delim); * echo 'Total tokens: '.$st->countTokens().'
'; * while ($st->hasMoreTokens()) { * echo $st->nextToken() . '
'; * } * prints the following output: * Total tokens: 4 * this * is * a * test * ?> *
*/class StringTokenizer { /** @var string */ private $string; /** @var string */ private $token; /** @var string */ private $delim; /** * Constructs a string tokenizer for the specified string. * @param string $str String to tokenize * @param string $delim The set of delimiters (the characters that separate tokens) * specified at creation time, default to " \n\r\t\0" */ public function __construct($str, $delim=" \n\r\t\0") { $this->string = $str; $this->delim = $delim; $this->token = strtok($str, $delim); } /** * Destructor to prevent memory leaks */ public function __destruct() { unset($this); } /** * Calculates the number of times that this tokenizer's nextToken method can * be called before it generates an exception * @return int - number of tokens */ public function countTokens() { $counter = 0; while($this->hasMoreTokens()) { $counter++; $this->nextToken(); } $this->token = strtok($this->string, $this->delim); return $counter; } /** * Tests if there are more tokens available from this tokenizer's string. It * does not move the internal pointer in any way. To move the internal pointer * to the next element call nextToken() * @return boolean - true if has more tokens, false otherwise */ public function hasMoreTokens() { return ($this->token !== false); } /** * Returns the next token from this string tokenizer and advances the internal * pointer by one. * @return string - next element in the tokenized string */ public function nextToken() { $hold = $this->token; //hold current pointer value $this->token = strtok($this->delim); //increment pointer return $hold; //return current pointer value }}?>

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

http://www.bkjia.com/PHPjc/1136610.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1136610.htmlTechArticlephp英文單詞統計器, 本文執行個體為大家分享了英文單詞統計器php 實現,供大家參考,具體內容如下 程式開始運行, 按"瀏覽"鈕選擇一個英文...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.