早在 2002 年 10 月,csnyder at chxo dot com 就写了关于拼写函数的第一条评论,并通过直接调用 aspell 编写了一个非常复杂的拼写检查程序。同样,我编写了一个简化的 PHP 函数,该函数将对字符串进行拼写检查并在拼写错误的单词前后插入标签。不提供自动更正。
<?
function spellcheck($string) {
// 输入:$string:要进行拼写检查的文本。
// 返回:在拼写错误的单词前后插入“<strong>”和“</strong>”的字符串
// 拼写错误之后.
$pre='<strong>'; // 在每个拼写错误的单词前插入.
$post='</strong>'; // 在每个拼写错误的单词后插入.
$string=strtr($string,"\n"," ");
// 删除字符串中的换行符。(这在这种情况下会影响 aspell。)
$mistakes = `echo $string | /usr/local/bin/aspell list`;
// 获取错误列表.
$offset=0;
foreach (explode("\n",$mistakes) as $word)
// 遍历列表,插入 $pre 和 $post 字符串。我移动并
// 执行插入,并跟踪位置。全局替换
// 使用 str_replace($string,$pre.$work.$post) 如果
// 同一个拼写错误出现多次,则会出现问题.
if ($word<>"") {
$offset=strpos($string,$word,$offset);
$string=substr_replace($string, $post, $offset+strlen($word), 0);
$string=substr_replace($string, $pre, $offset, 0);
$offset=$offset+strlen($word)+strlen("$pre $post");
};
return $string;};
?>
要在您的系统上运行此程序,请查看 /usr/local/bin/aspell list 是否可以从 shell 运行。它需要从标准输入获取输入。您可能无法在没有 PHP 路径的情况下运行 aspell,因为 PHP 调用中的 PATH 变量可能与 shell 调用中的不同。