php pspell_new,PHP pspell_check 用法 手册 | 示例代码

I had to write these routines to highlight spellings in a WYSIWYG editor.

pspell() barfed at HTML tags and entities, so this code deals with them.

ClearSpell() allows you to clear up the spellchecker mark up afterwards.*/?>

acronym.spell

{

text-decoration:underline;

color:red;

cursor:help;

}

$t="text herre & some more";

echo"Before:$t";$t=SpellCheck($t);

echo"


After SpellCheck:$t";$t=ClearSpell($t);

echo"


After ClearSpell:$t";?>

{//depends on fnSpell()

// Extracts text from HTML code. In addition to normal word separators,  HTML tags

// and HTML entities also function as word delimiters$pspell_link=pspell_new("en");//0. Get the dictionary$strings=explode(">",$text);//1. Split $text on '>' to give us $strings with 0 or 1 HTML tags at the end$nStrings=count($strings);

for ($cStrings=0;$cStrings

{$string=$strings[$cStrings];//2. For each string from 1if ($string=='')

continue;$temp=explode('' to give us a $tag and $cdata$tag=$temp[1];$cdata=$temp[0];$subCdatas=explode(";",$cdata);//2.2 Split &cdata on ';' to give $subcdatas with 0 or 1 HTML entities on the end$nSubCdatas=count($subCdatas);//2.3   For each $subCdata from $subcdatas in 2.2for ($cSubCdatas=0;$cSubCdatas

{$subCdata=$subCdatas[$cSubCdatas];

if ($subCdata=='')

continue;$temp=explode('&',$subCdata);//2.3.1     Split the $subCdata on '&' to give us a $subCdataEntity and a $subCdataWithNoEntities$subCdataEntity=$temp[1];$subCdataWithNoEntities=$temp[0];$subCdataWithNoEntities=fnSpell($pspell_link,$subCdataWithNoEntities);//2.3.2     Spellcheck the $cdataWithNoEntitiesif (!$subCdataEntity)//2.3.3        Put the $subCdataEntity, a '&' and the $cdataWithNoEntities back into the $subCdata from 2.2$subCdata=$subCdataWithNoEntities;

else$subCdata=$subCdataWithNoEntities.'&'.$subCdataEntity.';';$subCdatas[$cSubCdatas] =$subCdata;//2.3.4        Put the $subCdata back into the array of $subCdatas}$cdata=implode("",$subCdatas);//2.4    Implode the array of $subCdatas back into the $cdataif ($tag)//2.5    Put the $tag , '>' and $cdata back into $string$string=$cdata.'';

else$string=$cdata;$strings[$cStrings] =$string;//2.6    Put $string back in its place in $strings}$text=implode('',$strings);//3  Implode the $strings back into $textreturn$text;

}

functionfnSpell($pspell_link,$string)

{preg_match_all("/[A-Z']{1,16}/i",$string,$words);

for ($i=0;$i

{$currentword=$words[0][$i];

if (!pspell_check($pspell_link,$currentword))

{$wordarray=pspell_suggest($pspell_link,$currentword);$words=implode(', ',$wordarray);$suggest="$currentword";$string=str_replace($currentword,$suggest,$string);

}

}

return$string;

}

functionClearSpell($text)

{$strings=explode(">",$text);$nStrings=count($strings);

for ($cStrings=0;$cStrings

{$string=$strings[$cStrings];

if ($string=='')

continue;$temp=explode('

if (strstr($tag,'acronym') &&strstr($tag,"class='spell'") )$string=$cdata;

else$string=$cdata.'';$strings[$cStrings] =$string;

}$text=implode('',$strings);

return$text;

}?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值