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