是否可以使用£作为preg_replace中的分隔符?
我正在将我发现的eregi_replace函数转换为preg_replace,但是eregi字符串包含了键盘上的每个字符。所以我尝试使用£作为分隔符..它目前正在工作,但我想知道它是否可能导致问题,因为它是一个非标准字符?
这是eregi:
function makeLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',
'<a href="\1">\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',
'\1<a href="http://\2">\2</a>', $text);
return $text;}
和preg:
function makeLinks($text) {
$text = preg_replace('£(((f|ht){1}tp://)[-a-zA-^Z0-9@:%_+.~#?&//=]+)£i',
'<a href="\1">\1</a>', $text);
$text = preg_replace('£([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)£i',
'\1<a href="http://\2">\2</a>', $text);
return $text;
}
没有找到相关结果
已邀请:
5 个回复
缕嚏冻
有问题,因为它不是ASCII字符。它来自Latin-1字符集,只有在PHP脚本也使用8位表示时才会起作用。如果您的文件编码为UTF-8,则
将表示为两个字节。 PHP中的PCRE将超越它。 (至少我的版本。)
视蕉梁拌客
这可能比试图找到一个不是(还)部分表达的晦涩角色更好。
娜拐赐巫潭
注意ereg功能和unicode支持。 http://www.regular-expressions.info/php.html http://www.regular-expressions.info/characters.html 女王万岁。
犀耽澄协吻
不起作用,但
会起作用。你可以使用
,
,
或
中的任何一种,但我推荐使用大括号或方括号;括号在正则表达式中过于常见,并且尖括号用于转义序列,如
(原子组)和
(lookbehind)。 但是我在这个问题上和@Brad一起:为什么不在正则表达式出现时只用反斜杠转义分隔符?
疾桓