有人能给我提供一个生成弹头的函数吗?

时间:2020-12-30 作者:William

Wordpress用于生成slug的函数分散在几个函数和过滤器中。我找不到全部。有人能给我提供一个php函数来生成slug吗?我不需要Wordpress的所有功能,只需要对非拉丁字符进行编码并删除url中不允许的非法字符。

This post 提供函数,但不能处理非拉丁字符。

谢谢

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这篇文章提供了一个函数,但它不能处理非拉丁字符。

这是因为URL不能有非拉丁/ASCII字符。

浏览器可能会向您显示非拉丁字符,但这只是一个用户界面功能。

例如,如果您访问此Wiktionary 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. 同样,UI将显示日语字符,但如果复制链接,则会得到编码版本。

如果我们更新数据库并将帖子的slug改为わかもの, 帖子现在无法加载,我们得到了404。这是因为slug无效,无法加载与该slug匹配的URL。

是的,我需要将非拉丁字符编码为%xx

你需要urlencodeecho urlencode( $slug )