Подобный текст без потери форматирования текста

краткое

Как я могу подобный текст, используя функцию similar_text () без потери форматирования текста? Я хочу создать одну функцию для аналогичного текста без потери форматирования текста в без учета регистра регулярное выражение. Я сам пока ничего не смог сделать. Потому что я не понимаю такие операции, похожие на случай текста и аналогичного текста. Я пытался только с разбивкой слов на пробел, используя функцию взорваться (). И мой вариант не работает ни в одном реестре. Плюс, не возвращайте исходный формат и оригинальное слово в регистр текста. Что я должен делать? Что вы предпочитаете делать в этом задании? Как обойти эту ситуацию? Конечно, функция также должна работать очень быстро, с максимально возможным количеством данных (большой массив). Как правильные слова, первоначально будет один массив с правильными вариантами слов (в нижний регистр). И используя эти слова из массива, вы должны исправить текст как можно более корректно и в исходном регистре слова в тексте.

$dict = array(
"two",
"occasions",
"have",
"been",
"asked",
"members",
"parliament",
"pray",
"babbage",
"you",
"into",
"machine",
"wrong",
"figures",
"will",
"right",
"answers",
"come",
"able",
"rightly",
"apprehend",
"confusion",
"ideas",
"question");

Введите текст:

На двух уроках меня спрашивают [члены Париамнта]: «Прай, мистер Бабейдж, если вы поставите его на фигню, вы увидите, что все в порядке?» Я не в силах предвосхитить такое заблуждение ид, которое могло бы спровоцировать такой вопрос. Чарльз Бэббидж

Необходимый результат:

Два раза меня [члены парламента] спрашивали: «Помолитесь, мистер Бэббидж, если вы введете в машину неправильные цифры, будут ли правильные ответы?» Я не могу правильно понять тот тип смешения идей, который может спровоцировать такой вопрос. Чарльз Бэббидж

0

Решение

function similar_correcting($text, $dict)
{
$step1 = strtolower($text); // text to lower case
$step2 = preg_replace('/[^a-z ]/iu', ' ', $step1); // delete all without letters a-z
$input = array_unique(explode(' ', $step2)); // generate new unique array from input text

$res = array(); // create new associative array for incorrect/correct values for using to replace
foreach ($input as $in)
{
$match = 0; // set default value to variable match
foreach ($dict as $correct) // us out dict for checking word in input text array values
{
similar_text($correct, $in, $percent); // check for correcting
if ($percent > $match) // if persent > 0
{
$result = $correct; // set to result correct form word
$match = $percent;
}
}
$res[$in] = $result; // set to output array res keys founded incorrect values from input text array and set to value correct form words for replace
}
// Here we replace all words in input text from associative array $res by replace key to value in input text in any cases
$response = preg_replace_callback("/\pL+/u", function ($m) use ($res) {
$word = mb_strtolower($m[0]);
if (isset($res[$word])) {
$repl = $res[$word];
if ($word === $m[0]) return $repl;
if (mb_strtoupper($word) === $m[0]) return mb_strtoupper($repl);
if (mb_convert_case($word,  MB_CASE_TITLE) === $m[0]) return mb_convert_case($repl,  MB_CASE_TITLE);
for ($i = 0, $len = mb_strlen($word); $i < $len; ++$i) {
$mixed[] = mb_substr($word, $i, 1) === mb_substr($m[0], $i, 1)
? mb_substr($repl, $i, 1)
: mb_strtoupper(mb_substr($repl, $i, 1));
}
return implode("", $mixed);
}
return $m[0];
}, $text);

return $response; // and return the closest correct text form.
}

$text = "On tw ocasons I hve bee aked [by mebers of Pariamnt]: 'Pry, Mr. Babage, if you put ito the mahine wrng figres, wll the rigt aswers cme out?' I am not ale rghty to aprehend the kind of conusion of idas that could provoke such a quetion. Charles Babbage";

echo similar_correcting($text, $dict);

Введите текст:

На двух уроках меня спрашивают [члены Париамнта]: «Прай, мистер Бабейдж, если вы поставите его на фигню, вы увидите, что все в порядке?» Я не в силах предвосхитить такое заблуждение ид, которое могло бы спровоцировать такой вопрос. Чарльз Бэббидж

Вывод текста:

Два неправильных случая, когда INTO спрашивали [вы, члены двух парламентов]: «Молитесь, члены. Бэббидж, ты задаешь вопрос, есть ли у машины неправильные цифры? INTO иметь в состоянии по праву два восприятия иметь в два путаницы две идеи у вас воспринимать машину есть вопрос. Есть Бэббидж

Как получить результат неправильно. Но это потому, что некоторые слова не существуют в словаре.

Добавим нужные слова в словарь

$dict = array
(
"on",
"two",
"occasions",
"i",
"have",
"been",
"asked",
"by",
"members",
"of",
"parliament",
"pray",
"mr",
"babbage",
"if",
"you",
"put",
"into",
"the",
"machine",
"wrong",
"figures",
"will",
"right",
"answers",
"come",
"out",
"am",
"not",
"able",
"rightly",
"to",
"apprehend",
"kind",
"confusion",
"ideas",
"that",
"could",
"provoke",
"such",
"a",
"question",
"charles",
);

$text = "On tw ocasons I hve bee aked [by mebers of Pariamnt]: 'Pry, Mr. Babage, if you put ito the mahine wrng figres, wll the rigt aswers cme out?' I am not ale rghty to aprehend the kind of conusion of idas that could provoke such a quetion. Charles Babbage";

echo similar_correcting($text, $dict);

Введите текст:

На двух уроках меня спрашивают [члены Париамнта]: «Прай, мистер Бабейдж, если вы поставите его на фигню, вы увидите, что все в порядке?» Я не в силах предвосхитить такое заблуждение ид, которое могло бы спровоцировать такой вопрос. Чарльз Бэббидж

Вывод текста:

Два раза меня [члены парламента] спрашивали: «Помолитесь, мистер Бэббидж, если вы введете в машину неправильные цифры, будут ли правильные ответы?» Я не могу правильно понять тот тип смешения идей, который может спровоцировать такой вопрос. Чарльз Бэббидж

Необходимый текст для пользователя:

Два раза меня [члены парламента] спрашивали: «Помолитесь, мистер Бэббидж, если вы введете в машину неправильные цифры, будут ли правильные ответы?» Я не могу правильно понять тот тип смешения идей, который может спровоцировать такой вопрос. Чарльз Бэббидж

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]