2012-04-30 4 views
4

Я пытаюсь использовать pspell в сочетании с aspell для PHP.pspell и aspell с php для немецкого языка

Я установил его на этом пути:

sudo apt-get install libpspell-dev 
sudo apt-get install php5-pspell 
sudo apt-get install aspell-de 

После этого, вот пример кода:

$pspell_link = pspell_new("de"); 
var_dump(pspell_check($pspell_link, "Verkäuferin")); 
if (!pspell_check($pspell_link, "Verkäuferin")) { 
    $vorschlaege = pspell_suggest($pspell_link, "verkäuferin"); 
    foreach ($vorschlaege as $vorschlag) { 
    echo "Mögliche Schreibweise:" . $vorschlag . "<br>"; 
    } 
} 

Есть две проблемы:

  1. Этот пример Дон» t понимать немецкий umlauts
  2. По существу они должны быть U ppercase, чтобы pspell_check вернул значение true. Когда у меня есть все слова в нижнем регистре, как стать истинным? Например, «Ball» вернет true, но «ball» вернет false. Как решить, что для «шара» чек также вернется?
+0

немецкая проблема умляуты фиксируется следующим образом: $ pspell_link = pspell_new ("де", "", "", "UTF-8"); Но проблема с верхним регистром еще не исправлена ​​:-( –

ответ

2

Попробуйте указать кодировку символов. Я был в состоянии получить свой код, чтобы работать, просто изменив первую строку:

$pspell_link = pspell_new("de", "", "", "utf-8"); 

также: Несмотря на то, что позволило «Verkäuferin» пройти проверку орфографии, мой сервер не смог выводить буквы с умляутов корректно до Я помещаю эту строку в файл php.ini.

default_charset = "utf-8" 

Для получения дополнительной информации о кодировках с PHP, эта страница выглядит полезным:

http://kore-nordmann.de/blog/php_charset_encoding_FAQ.html#which-charset-encoding-do-strings-have-in-php

Что касается вашего второго вопроса, хотя пакет Aspell, который использует PHP поддерживает регистронезависимое соответствия, к сожалению, PHP не позволяет вам выбрать этот параметр. Вот лучшее решение, которое я мог бы придумать:

$pspell_link = pspell_new("de", "", "", "utf-8"); 
$wort = "verkäuferin"; 
$richtig = pspell_check($pspell_link, $wort); 
if (!$richtig) { 
    $vorschlaege = pspell_suggest($pspell_link, $wort); 
    // make a copy of the array with all words in lowercase, so we can still 
    // display the original suggestions if necessary 
    $kleinschrift_vorschlaege = array_map('strtolower', $vorschlaege); 
    // convert the original word to lowercase before comparing it 
    $richtig = in_array(strtolower($wort), $kleinschrift_vorschlaege); 
} 
echo "'$wort' ist " . ($richtig ? "" : "nicht") . " richtig buchstabiert.<br/>"; 
if (!$richtig) { 
    echo "Mögliche Schreibweisen:<br/>"; 
    foreach ($vorschlaege as $vorschlag) { 
    echo "&nbsp; &nbsp; " . $vorschlag . "<br/>"; 
    } 
} 
+0

Ooops! Я просто понял, что вы уже поняли это. Если вы ответите на свой вопрос, вероятно, вы должны отправить ответ и одобрить его. Комментарии не так очевидны. :) – Lambart

+1

Там , Я также попытался ответить на ваш второй вопрос. Надеюсь, это поможет кому-то. – Lambart

+0

Должен быть принят ответ ... –

0

Существует простое решение. Просто сделайте это:

$word = ucfirst($word); //Always capitalize to avoid case sensitive error 
if (!pspell_check($dict, $word)) { 
    $suggestions = pspell_suggest($dictionary, $word); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^