Emm*_*uel 2 php regex preg-match
这是我的代码
$string = preg_replace("/rad\:([0-9]+)px\;\s+\/\*\sALT\[(.+)\*\/|rad\:([0-9]+)px\;/",("$2"?"$2":"$1"),$string);
Run Code Online (Sandbox Code Playgroud)
基本上,在正则表达式中我有一个管道 |,并且我正在搜索两种模式。如果与第一个模式(管道左侧)匹配,那么我希望将其替换为第二个捕获组($2),但如果它与第二个模式匹配(管道右侧)管道),然后我希望将其替换为第一个捕获组($1);
我尝试过的代码不起作用。这有可能吗?
谢谢你的帮助。
> PHP 5.3:
preg_replace_callback('..pattern...',
function($match){return empty($match[2]) ? $match[1]:$match[2];},
$string);
Run Code Online (Sandbox Code Playgroud)
< PHP 5.3:
function _my_func($match) {
return empty($match[2]) ? $match[1]:$match[2];
}
preg_replace_callback('..pattern...',
'_my_func',
$string);
Run Code Online (Sandbox Code Playgroud)
或者,在较旧的 PHP 版本中(该/e修饰符自 5.5 起已被弃用)。
preg_replace('...pattern..../e','strlen("$2") > 0?"$2":"$1"',$string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |