php - 在 preg_replace 中使用 £ 作为定界符可以吗?

标签 php regex preg-replace special-characters eregi

我正在将我发现的 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;}

和怀孕:

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;
}

最佳答案

£ 是有问题的,因为它不是 ASCII 字符。它来自 Latin-1 字符集,仅当您的 PHP 脚本也使用 8 位表示时才有效。如果您的文件编码为 UTF-8,则 £ 将表示为两个字节。 PHP 中的 PCRE 会被它绊倒。 (至少我的版本是这样。)

关于php - 在 preg_replace 中使用 £ 作为定界符可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207520/

相关文章:

php - 如何显示存储在 MySQL 数据库中的图像?

javascript - 类似于 PHP 中的二维数组

php - 查看某个时间段是否与当前时间匹配

php - 如何在php中用相应的多个字符替换多个字符?

php - 如何用 PHP 替换字符串中的变量?

php - preg_replace 即使在第一次替换之后也匹配字符串中的所有匹配项

php - JOIN在mysql中显示数据两次?

java - 为什么我的方法不适用于正则表达式?

regex - 匹配包含特定词的 URL

c++ - QRegExp问题