需要 ereg_replace 的帮助(已弃用)
Posted
技术标签:
【中文标题】需要 ereg_replace 的帮助(已弃用)【英文标题】:need an help for ereg_replace (deprecated) 【发布时间】:2013-08-27 18:09:36 【问题描述】:您好,我在 2 或 3 年前写过一些脚本。现在它没有运行。 我的脚本:
<?php
function tolink($text)
$text = " ".$text;
$text = ereg_replace('(((f|ht)1tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1" target="_blank" rel="nofollow">\\1</a>', $text);
$text = ereg_replace('(((f|ht)1tps://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1" target="_blank" rel="nofollow">\\1</a>', $text);
$text = ereg_replace('([[:space:]()[])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a href="http://\\2" target="_blank" rel="nofollow">\\2</a>', $text);
$text = ereg_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]2,4)',
'<a href="mailto:\\1" rel="nofollow">\\1</a>', $text);
return $text;
?>
当我用 preg_replace 替换 ereg_replace 时,它给了我一个错误。
我需要你的帮助...谢谢...
【问题讨论】:
How can I convert ereg expressions to preg in PHP?的可能重复 【参考方案1】:PHP 中的所有 PCRE 函数都要求您使用一对分隔符将正则表达式括起来,例如在此示例中,围绕正则表达式的 /
:
preg_replace ('/regexp_to_match/', 'replacement', $text);
这允许您在第二个分隔符之后将修饰符附加到正则表达式,如下所示:
preg_replace ('#regexp_to_match#i', 'replacement', $text);
执行不区分大小写的匹配。
从这两个示例中可以看出,分隔符可以是任何字符。正则表达式的第一个字符作为分隔符,然后在末尾查找匹配项。如果字符是一个括号字符,它会寻找它的反义词,例如
preg_match ('<x*>', $text);
这是您第一次替换的preg_replace()
版本。
$text = preg_replace('<(((f|ht)1tp://)[-\w@:%+.~#?&/=]+)>',
'<a href="$1" target="_blank" rel="nofollow">$1</a>', $text);
我还简化了正则表达式:我将\w
用于单词字符,而不是明确列出字母数字,删除了+
之前在[...]
中不必要的\
,并将//
更改为@987654332 @ 在括号内(多余的斜线是多余的)。此外,现在替换时首选$1
,而不是\\1
。
【讨论】:
我试过 $text = preg_replace('/(((f|ht)1tp://)[-a-zA-Z0-9@:%_\+. ~#?&//=]+)/', '\\1', $text); 您需要转义正则表达式中的所有/
字符,因为您使用它作为分隔符。或者使用不同的字符作为分隔符,一个不在正则表达式中的字符。
我都试过了,但还是不行……你能举个例子吗?以上是关于需要 ereg_replace 的帮助(已弃用)的主要内容,如果未能解决你的问题,请参考以下文章
Flutter - 'showSnackBar' 已弃用 - 如何更新?
我如何使已弃用的 FSPathMakeRef、FSIsAliasFile、FSResolveAliasFileWithMountFlags、FSRefMakePath 现代化
我该如何调整这个已弃用的 StratifiedKFold 代码
mpdf 错误 - preg_replace(): /e 修饰符已弃用,请改用 preg_replace_callback