0
我想知道是否有一种优雅的方式来执行preg_replace
,但仍保留被preg_replace
取代的内容。preg_replace - 保留变量中已被替换的内容
举例想象一个包含随机站点HTML的字符串。我想从该字符串中删除<head>
作进一步处理,并仍将<head>
元素的内容保留在额外变量中(例如,用于解析元标记)。
我能想到的两种可能做到这一点(不使用全局变量):
if (preg_match('%<head>(.*?)</head>%ism', $html, $matches)) {
$html = preg_replace('%<head>(.*?)</head>%ism', '', $html);
$head = $matches[1];
}
这其中有执行正则表达式这两次是不理想的。
$head = '';
$html = preg_replace_callback(
"%<head>(.*?)</head>%ism",
function ($match) use (&$head) {
$head .= $match[1];
return '';
},
$html
);
我想知道是否有一个更优雅/高效的方式来做到这一点。
@WiktorStribiżew那么他如何在这种情况下捕获比赛? – Steve
我会去参加第一场比赛。我不认为还有更好的办法,但是你可以使用'str_replace'来获得比赛来保存第二个正则表达式 – apokryfos
我没有注意到你正在存储比赛。第二个是最高效的。 –