Как я могу исключить пунктуацию из этого регулярного выражения при включении букв с акцентом? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь исправить некоторый код в Laravel, который сопоставляет ключевые слова с их вхождениями в тексте. Поскольку это слова и текст на иностранном языке, я сталкиваюсь с некоторыми проблемами - я могу сказать, что, скажем, "stackoverflow!" должно соответствовать «stackoverflow» с этой строкой:

$test = str_replace(array(',','.','!',';',':','?'), '', trim(strtolower($word)));

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

$test = preg_replace("/[^\x41-\x7A\xC0-\xFF]/","", $test);

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

Само собой разумеется, я пытался написать регулярное выражение, чтобы идентифицировать самих персонажей, их HTML-имена ... и многое другое.

Если проблема только в том, что не удалось распознать расширенную таблицу символов, как я могу это исправить?

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2019

Я создал функцию для удаления всех специальных символов для строки

     /**
     * Removes the Special Charater from the string
     *
     * @author Manojkiran.A <manojkiran10031998@gmail.com>
     * @param string $stringWiSpCh The Strings With Special Charateers
     * @return string
     **/
    function removeSpecial(string $stringWiSpCh)
    {
        // Removes special chars.
        return preg_replace('/[^A-Za-z0-9\-]/', '', $stringWiSpCh);
    }

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...