将A替换为B,将B替换为A.

Wai*_*... 1 php regex preg-replace

有没有使用的方式preg_replace来代替AB是否A存在,或者B对于A是否B存在?

就像是:

preg_replace('/ORDER BY field (ASC|DESC)/', 'ORDER BY field (***the alternative not matched***)');
Run Code Online (Sandbox Code Playgroud)

把任何ORDER BY field ASC变成ORDER BY field DESC,ORDER BY field DESC变成任何变成ORDER BY field ASC.

Voi*_*ski 6

您正在寻找的功能是preg_replace_callback.

例:

function replace_asc_desc($matches)
{
    return 'ORDER BY field ' . ($matches[1] == 'ASC' ? 'DESC' : 'ASC');
}

$string = 'ORDER BY field DESC';

echo preg_replace_callback('/ORDER BY field (ASC|DESC)/', 'replace_asc_desc', $string);
Run Code Online (Sandbox Code Playgroud)