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
我沒有注意到你正在存儲比賽。第二個是最高效的。 –