preg_replace里面的strtolower - 可能吗?

时间:2010-03-09 20:14:48

标签: php

是否可以在strtolower

的替换部分中使用preg_replace

这不起作用:

preg_replace('/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org|tv|biz)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/i', '<a href="http://www.'.strtolower('$3').'" target="_blank">'.strtolower('$3').'</a>', $d);

2 个答案:

答案 0 :(得分:4)

有可能,是的。查看e修饰符(Example #4):

preg_replace('/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org|tv|biz)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie', "'<a href=\"http://www.'.strtolower('$3').'\" target=\"_blank\">'.strtolower('$3').'</a>'", $d);

(未经测试,转义反斜杠的数量可能有误。)

答案 1 :(得分:2)

我赞成使用preg_replace_callback()而不是使用e(eval)修饰符。我觉得代码更干净,错误的余地更小。