2016-06-17 43 views
0

我有一個鏈接在我的網站上輸出,我想要做的是替換用戶看到的可見文本,但鏈接將始終保持不變。PHP的正則表達式 - 替換標籤之間的所有文本

會有很多不同的動態網址與文字被更改,讓我發現迄今只能使用完全標籤,如「類似/.*/'...or東西全部例子正則表達式

編輯舉一個更好的例子

$link = '<a href='some-dynamic-link'>Text to replace</a>'; 
$pattern = '/#(<a.*?>).*?(</a>)#/'; 
$new_text = 'New text'; 
$new_link = preg_replace($pattern, $new_text, $link); 

當打印輸出時,以下是我正在尋找,對我的結果。

期望

<a href='some-dynamic-link'>New text</a> 

實際

'New text' 
+1

這是什麼問題? – nicael

+0

你的PHP使用情況如何?如果沒有使用's'修飾符,'.'與換行符不匹配。您也可能想要使用解析器。 – chris85

+0

問題是,這是替換整個標籤,並正在刪除 Key

回答

2

正如你已經在使用捕獲組,爲什麼沒有真正使用他們。

$link = "<a href='some-dynamic-link'>Text to replace</a>"; 
$newText = "Replaced!"; 
$result = preg_replace('/(<a.*?>).*?(<\/a>)/', '$1'.$newText.'$2', $link); 
+0

令人驚歎 - 完美的作品。 – Key

+0

@Key然後請不要忘記接受:) – nicael

相關問題