Удалите специальные символы и преобразуйте гласные с метками ударения в гласные без меток акцента в слагах CakePHP

Мне нужно два улучшения для моих слизней:

  1. Удаление специальных символов.

  2. Преобразование гласных с метками ударения в гласные без меток.

Проблема в том, что мой сайт генерирует URL-адреса с такими ссылками, как:

https://example.net/Toronto/product/férula-dental-limpieza-con-ul

https://cuponclub.net/Toronto/product/lifting-de-pestañas

Эти специальные символы, такие как «é» и «ñ» ​​в URL, как правило, проблематичны для меня по многим различным причинам, например, когда я интегрирую URL в API, которые я использую, или даже когда делюсь ссылками …

я использую CakePHP 1.2, Вот как я реализую слагов в коде:

class Product extends AppModel{
..........
..........
..........
var $actsAs = array(
'Sluggable' => array(
'label' => array(
'short_name'
),
'length' => 30,
'overwrite' => false
)
);
..........
..........
..........
}

В базе данных 'short_name' это поле, которое используется для генерации пули. Без CakePHP PHP уже предоставляет встроенные функции, такие как str_replace() а также preg_replace() и с помощью этих функций и регулярного выражения, такого как [^A-Za-z0-9\-]Я мог удалить все специальные символы после замены всех пробелов дефисами. Но так как я использую CakePHPМне нужно использовать его синтаксис. я читал https://github.com/msadouni/cakephp-sluggable-plugin и я нашел эту информацию о label:

метка: (массив | строка, необязательно) установить имя поля, которое содержит
строка, из которой создается слаг или набор имен полей для
объединить для генерации пули. ПО УМОЛЧАНИЮ: название

Можно лечить label в виде строки и применять такие функции, как str_replace() а также preg_replace() к этому?

0

Решение

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

Итак, просто раскошелиться и внесите необходимые изменения или создайте собственное поведение. Я бы также посоветовал взглянуть на то, как последний CakePHP справляется с этим, см. Источник для \Cake\Utility\Text::slug(). Если ваша установка PHP поддерживает это, то вы можете сделать бэкпорт, то есть использовать Функциональность транслитерации PHP обеспечивается расширением INTL.

3

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector