Как добавить несловесные символы в Inflector :: slug () для CakePHP 1.2? - PullRequest
0 голосов
/ 07 декабря 2011

Класс CakePHP 1.2 Inflector имеет метод slug (), который преобразует пробелы в символы подчеркивания, преобразует символы без акцента в символы без акцента, а символы без слов удаляются.

У меня есть случай, когда специальные двойные кавычки [«И»] не удаляются.

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

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

Мой возможный обходной путь состоял в том, чтобы использовать функцию кодирования в Chrome, чтобы получить нужные мне символы. Обычно веб-страница имеет кодировку UTF-8, поэтому я заставил Chrome отображать в ISO-8859-1, что преобразовало «в». Это Меню, Инструменты, Кодировка, а затем выберите кодировку.

Когда дело дошло до изменения Inflector :: slug (), строка '/[^\w\s]/' => ' ', меняется на '/–|“|’|â€|[^\w\s]/' => ' ',.

Я конвертировал [^ \ w \ s] последним и вторым последним. Если [^ \ w \ s] раньше, € конвертируется в пробел, а другие специальные символы, которые не конвертируются. И есть аналогичная сделка с ...

Используемая строка замены не является исчерпывающей. В настоящее время он обслуживает специальную черту, специальные двойные кавычки, специальные двойные кавычки и специальные одинарные кавычки.

0 голосов
/ 08 декабря 2011

Вы можете удалить символы не-ascii, прежде чем вставлять их в инфлектор.

<?php $output = preg_replace('/[^(\x20-\x7F)]*/','', $input); ?>
...