Конвертировать одинарные кавычки в разделители в функции url_title в CodeIgniter - PullRequest
0 голосов
/ 02 ноября 2018

В CodeIgniter функция url_title принимает в качестве входных данных строку заголовка и создает удобную для пользователя строку URL с разделителем (тире или подчеркиванием).

В настоящее время функция удаления одинарных кавычек. На французском языке одинарная кавычка (апостроф) - это разделитель слов.

Например: ожидаемый слаг для " L'apostrophe " равен " l-апостроф ", а не " лапостроф ", как в настоящее время вывод функции url_title .

Я хотел бы обновить следующий исходный код ( / system / helpers / url_helper.php - строка 493):

$trans = array(
    '&.+?;'         => '',
    '[^\w\d _-]'        => '',
    '\s+'           => $separator,
    '('.$q_separator.')+'   => $separator
);

Так как, но я не знаком с RegEx, было бы неплохо, если бы кто-нибудь помог мне добавить одинарную кавычку в массив $trans для преобразования одинарных кавычек в разделители.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Модификация ядра CodeIgniter всегда является проблемой для обеспечения обновления и совместимости с будущими версиями. Я бы лучше предложил обновить массив иностранных символов для транслитерации | преобразование, используемое помощником Text (в / application / config / foreign_chars.php ).

Добавьте следующую строку в конец массива:

'/\'/' => ' '

Это преобразует одинарные кавычки ('/\'/') в пробелы (' ') при вызове функции convert_accented_characters.

0 голосов
/ 02 ноября 2018

Вы можете заменить [^\w\d _-] на [^\w\d' _-] и \s+ на [\s']+

Этот шаблон [^\w\d _-] является отрицательным классом символов , который будет соответствовать ' и будет заменен пустой строкой. Если вы добавите ' в существующий класс символов, он не будет сопоставлен и не будет заменен.

\s+ соответствует 1+ пробельных символов, и они будут заменены разделителем. Вы можете превратить это в класс персонажей [\s']+ и повторить это 1+ раз. Тогда то, что будет сопоставлено здесь, будет заменено на $separator

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

...