你好我2年或3年前写了几个脚本。现在它没有运行。 我的脚本:
<?php
function tolink($text){
$text = " ".$text;
$text = ereg_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1" target="_blank" rel="nofollow">\\1</a>', $text);
$text = ereg_replace('(((f|ht){1}tps://)[-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时,它会给我一个错误。
我需要你的帮助......谢谢...
答案 0 :(得分:0)
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){1}tp://)[-\w@:%+.~#?&/=]+)>',
'<a href="$1" target="_blank" rel="nofollow">$1</a>', $text);
我还简化了正则表达式:我使用\w
代替单词字符,而不是明确列出字母数字,删除了\
中+
之前的不必要的[...]
,并在括号内更改//
到/
(额外的斜杠是多余的)。此外,$1
最近更换为\\1
,而不是{{1}}。