在CodeIgniter中, url_title 函数将“ title”字符串作为输入,并创建带有“分隔符”(破折号或下划线)的人性化URL字符串。
当前,该函数删除单引号。法语中的单引号(撇号)是一个单词分隔符。
例如:“ L'apostropphe ”的预期结果是“ l-撇号”,而不是“ lapostrophe ”当前是 url_title 函数的输出。
我想更新以下源代码( /system/helpers/url_helper.php -第493行):
$trans = array(
'&.+?;' => '',
'[^\w\d _-]' => '',
'\s+' => $separator,
'('.$q_separator.')+' => $separator
);
由于我不熟悉RegEx,如果有人可以帮助我在数组$trans
中添加单引号以将单引号转换为分隔符,那就太好了。
答案 0 :(得分:1)
您可以将[^\w\d _-]
替换为[^\w\d' _-]
,将\s+
替换为[\s']+
此模式[^\w\d _-]
是一个否定的character class,它将与'
匹配,并将由空字符串替换。如果您将'
添加到现有字符类中,则它将不匹配且不会被替换。
\s+
匹配1+个空格字符,这些字符将由分隔符替换。您可以将其转换为字符类[\s']+
并重复1次以上。然后将在此处匹配的内容替换为$separator
在示例中转义\'
,因为正则表达式已位于单引号之间。
答案 1 :(得分:1)
修改CodeIgniter核心始终是确保升级和与将来版本兼容的问题。我最好建议更新外来字符数组进行音译|文本助手使用的转换(在 /application/config/foreign_chars.php 中)。
在数组末尾添加以下行:
'/\'/' => ' '
这将在调用'/\'/'
函数时将单引号(' '
)转换为空格(convert_accented_characters
)。