尝试将正则表达式匹配传递给函数时出错

问题描述 投票:4回答:5

我正在获取Syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'

这是我正在使用的代码

function wpse44503_filter_content( $content ) {
    $regex = '#src=("|\')'.
        '(/images/(19|20)(0-9){2}/(0|1)(0-9)/[^.]+\.(jpg|png|gif|bmp|jpeg))'.
        '("|\')#';
    $replace = 'src="'.get_site_url( $2 ).'"';

    $output = preg_replace( $regex, $replace, $content );

    return $output;
}

这是我遇到此错误的行$replace = 'src="'.get_site_url( $2 ).'"';

有人可以帮我修复它吗?谢谢

php regex preg-replace syntax-error
5个回答
3
投票

您要执行的操作(即用函数调用的结果替换匹配的字符串)无法使用preg_replace完成,您需要使用preg_replace来获取为每个匹配。


8
投票

您不能将'$ 2'作为变量名。它必须以字母或下划线开头。


3
投票

PHP变量名称不能以数字开头。


3
投票

get_site_url不是有效的PHP变量。如果要在正则表达式中表示第二组,则要将preg_replace_callback放在字符串中。但是,由于要将其传递给函数,因此需要使用preg_replace_callback代替,并在回调中适当替换。


0
投票

如果PHP变量以数字开头,请使用以下代码:

© www.soinside.com 2019 - 2024. All rights reserved.