1

在 CodeIgniter 中,url_title函数将“title”字符串作为输入,并创建一个带有“分隔符”(破折号或下划线)的人性化 URL 字符串。

目前,该功能删除单引号。在法语中,单引号(撇号)是一个单词分隔符。

例如:“ L'apostrophe ” 的预期 slug 是“ l-apostrophe ”,而不是“ lapostrophe ”,因为它当前是url_title函数的输出。

我想更新以下源代码(/system/helpers/url_helper.php - 第 493 行):

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

$trans因为但我不熟悉 RegEx,如果有人可以帮助我在数组中添加单引号以便将单引号转换为分隔符,那就太好了。

4

2 回答 2

1

修改 CodeIgniter 核心始终是一个问题,以确保升级和与未来版本的兼容性。我最好建议更新外来字符数组以进行音译 | 文本助手使用的转换(在/application/config/foreign_chars.php 中)。

在数组末尾添加以下行:

'/\'/' => ' '

这将在调用函数时将单引号 ( '/\'/') 转换为空格 ( )。' 'convert_accented_characters

于 2018-11-02T07:53:08.863 回答
1

你可以[^\w\d _-][^\w\d' _-]\s+替换[\s']+

此模式[^\w\d _-]是一个否定字符类,它将匹配 a'并将被一个空字符串替换。如果您添加'到现有的字符类,那么 is 将不会被匹配并且不会被替换。

\s+匹配 1+ 个空格字符,这些字符将被分隔符替换。你可以把它变成一个字符类[\s']+并重复 1 次以上。那么这里将匹配的将被替换为$separator

在您的示例中转义,\'因为正则表达式已经在单引号之间。

于 2018-11-02T07:07:51.680 回答