2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的正則表達(dá)式 - <base href="(.+)">
, 不匹配,因?yàn)楹竺娴牟糠?code>"(.+)"是錯(cuò)誤的。查看源字符串 -<base href="/" />
看到了嗎
?和/
?然后是. >
_
這只是使用正則表達(dá)式解析 HTML 不是一個(gè)好主意的眾多原因之一。即使沒有那個(gè)空格,甚至可能沒有那個(gè),該元素也是完全有效的/
。
但是,如果您 100% 確信該元素的位置base
不會(huì)變得太復(fù)雜(例如大量嵌套、屬性之間的新行等)。你也許可以通過——/<base[ ]*?href=".+"/i
查看演示
在 PHP 中,為了獲得預(yù)期的輸出,你可以這樣做-
$base = 'https://SOME_URL/';
$output = preg_replace('/(<base[ ]*?href=").+(")/', "$1$base$2", $html);

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
嘗試這個(gè)模式
(?<=<base\s)href="(.*?)"
查看演示
$html = '<html><head><base href="/" /></head><body></body></html>';
$base = 'https://SOME_URL/';
res=$html.replace(/(?<=base\s)href="([^"]*)"/,`"${$base}"`)
console.log(res)
- 2 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)