Кто-нибудь может предоставить мне функцию для генерации слизней?


Функции, используемые Wordpress для создания слизней, разбросаны по нескольким функциям и фильтрам. Я не могу найти их всех. Кто-нибудь может предоставить мне одну функцию php для генерации слизней? Мне не нужны все функции Wordpress, просто нужно кодировать нелатинские символы и удалять запрещенные символы, которые не разрешены в URL.

Этот пост предоставляет функцию, но он не может обрабатывать нелатинские символы.

Спасибо!

Author: William, 2020-12-30

1 answers

Это сообщение предоставляет функцию, но оно не может обрабатывать нелатинские символы.

Это потому, что URL-адреса не могут содержать нелатинские/ASCII-символы.

Браузеры могут показывать вам нелатинские символы, но это всего лишь функция пользовательского интерфейса.

Например, если вы посещаете этот URL-адрес викисловаря: https://en.wiktionary.org/wiki/わかもの#Japanese, URL-адрес вашего браузера кодирует японские символы, чтобы получить реальный URL-адрес: https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japanese, затем URL-адрес декодирует его при отображении URL-адреса. Версия со знаками процента является реальный URL.

Аналогично любым другим кодам символов, отличным от ASCII, например арабским. Если вы создадите сообщение с помощью slug わかもの, затем сохраните и проверьте базу данных, вы не увидите わかもの, вы увидите %e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae. Аналогично, пользовательский интерфейс покажет вам японские иероглифы, но если вы скопируете ссылку, вы получите закодированную версию.

Если мы затем обновим базу данных и изменим заголовок сообщения на わかもの, сообщение теперь не может быть загружено, и мы получим 404. Это потому, что пуля недействительна, и она невозможно загрузить URL-адрес, соответствующий этому пуле.

Да, мне нужно, чтобы нелатинские символы были закодированы как %xx

Вам нужно urlencode это echo urlencode( $slug )

 1
Author: Tom J Nowell, 2020-12-30 14:14:33