插件8:拼写检查

插件8:拼写检查<?php//Plug-in8:SpellCheck//Thisisanexecutableexamplewithadditionalcodesupplie

大家好,又见面了,我是你们的朋友全栈君。原文地址为:
插件8:拼写检查

<?php // Plug-in 8: Spell Check

// This is an executable example with additional code supplied
// To obtain just the plug-ins please click on the Download link

$text = "It was the best of tmes, it was the wrst of times, it was the age of wisdom, it was the age of foolishnes, it was the epoch of beleif, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despare, we had everything before us, we had nothing before us, we were all going drect to heaven.";

echo "$text<br /><br />";
echo PIPHP_SpellCheck($text, "u");

function PIPHP_SpellCheck($text, $action)
{
   // Plug-in 8: Spell Check
   //
   // This plug-in takes a string of text and then highlights
   // those words it doesn't recognise in the dictionary file.
   // The arguments required are:
   //
   //    $text:    Text to be modified
   //    $action:  What to do with unrecognized words:
   //              "u", "b", "i" = Underline, Bold or Italic

   $dictionary = PIPHP_SpellCheckLoadDictionary("dictionary.txt");
   $text      .= ' ';
   $newtext    = "";
   $offset     = 0;

   while ($offset < strlen($text))
   {
      preg_match('/[^\w]*([\w]+)[^\w]+/',
         $text, $matches, PREG_OFFSET_CAPTURE, $offset);
      $word   = $matches[1][0];
      $offset = $matches[0][1] + strlen($matches[0][0]);
      
      if (!PIPHP_SpellCheckWord($word, $dictionary))
         $newtext .= "<$action>$word</$action> ";
      else $newtext .= "$word ";
   }
   
   return rtrim($newtext);
}

function PIPHP_SpellCheckLoadDictionary($filename)
{
   return explode("\r\n", file_get_contents($filename));
}

function PIPHP_SpellCheckWord($word, $dictionary)
{
   $top = sizeof($dictionary) -1;
   $bot  = 0;
   $word = strtolower($word);

   while($top >= $bot)
   {
      $p =   floor(($top + $bot) / 2);
      if     ($dictionary[$p] < $word) $bot = $p + 1;
      elseif ($dictionary[$p] > $word) $top = $p - 1;
      else   return TRUE;
   }
     
   return FALSE;
}

?>

1. 插件说明:

插件8需要两个参数。一个代表需要拼写检查的字符串,另一个表示拼写检查后文本的显示方式。它们是:

$text 字符串变量,表示需要拼写检查的文本。

$action 字符串变量,它是一个字母,表示文本显示的格式。

dictionary.txt:

《太长了,省略。》

 

转载请注明本文地址:
插件8:拼写检查

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131120.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 『程序员』[Java]JAVA程序员必看的15本书的电子版

    『程序员』[Java]JAVA程序员必看的15本书的电子版

    2021年8月18日
    152
  • Java程序员烂大街了吗?是,也不是

    Java程序员烂大街了吗?是,也不是Java程序员烂大街了吗?有网友吐槽精通的人少,半吊子的人烂大街。半吊子程序员确实不少,除了自身学习有关,还跟培训机构教学有关,工作后能不能继续学造有关,现在学编程的越来越多,所以企业要求相对也比前些年要高很多。  企业想招一个合格的Jjava程序员很不容易。烂大街的说法有网友不怎么赞同,因为市场自己会过,留下好的淘汰掉不合格的。不合格的程序员有一些会放弃,从事别的工作,也有的会坚持学习达到市场的要求。只不过还有很多人在选择进入这个行业而已,很正常的现象。  以前可能知道大概会怎么使用就能找份不

    2022年7月7日
    315
  • 电子书 android高薪之路-android程序员面试宝典.pdf

    电子书 android高薪之路-android程序员面试宝典.pdf《Android高薪之路:Android程序员面试宝典》取材于各大IT公司面试真题,所给出的试题尽可能地覆盖了Android应用开发的各个方面,而且大多数试题都有解析部分,读者可以通过这部分更深入地理解试题中所包含的技术内容,希望真正做到由点成线,举一反三。 书中还将Android中涉及的各个常用技术问题进行筛选、分类。这样读者可以有的放矢,对自己还没有掌握的Android技术进行重点攻…

    2022年4月28日
    119
  • Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?

    Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?这里我们不说那些复杂的属性,光说我们通常用的比较多的,android:maxlength官网API对其的解释为:第一句,也就是说,他是个inputfilter(输入过滤器)他的作用是通过specifiednumber(你指定的数字)来限制textlength(文本长度),这里特指的是文本长度,而无论我们输入什么内容,英文,符号,数字,汉字………………这些都属于文本范围,所以ma

    2022年6月14日
    131
  • 据说年薪30万的Android程序员必须知道的帖子「建议收藏」

    据说年薪30万的Android程序员必须知道的帖子「建议收藏」Android中国开发精英目前包括:  Android开源项目第一篇——个性化控件(View)篇    包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphV

    2022年6月14日
    113
  • Android程序员的十大转型之路

    Android程序员的十大转型之路IT行业是一个瞬息万变的行业,程序员是一个不进则退的职业。我作为一个Android程序员,多年来一直保持随时可以转型其他技术领域的状态,保持对新技术敏感的嗅觉。

    2022年6月14日
    128

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号