2016-09-23 45 views
1

我有一個字符串,我想用給定的值替換文本[[signature]],但由於它是編碼的,文本看起來像%5B%5Bsignature%5D%5D正則表達式替換url編碼的字符串

如何使用正則表達式來替換它?這段代碼的工作,但只有當字符串沒有編碼:

$replace = preg_replace('/\[\[signature\]\]/', 'replaced!', $html); 
+0

爲什麼然後使用正則表達式?使用[''str_replace('%5B%5Bsignature%5D%5D','replacement!',$ html)'](https://ideone.com/Jsb31o) –

+0

使用['urldecode'](http:// php.net/manual/en/function.urldecode.php)方法在使用你的正則表達式之前在Php中可用。 – ThePerplexedOne

回答

4

你已編碼的字符串,所以只對其進行解碼,然後運行您更換。

$html = urldecode($html); 
$replace = preg_replace('/\[\[signature\]\]/', 'replaced!', $html); 

你總是可以再次對其進行編碼後,如果您需要:

$html = urlencode($html); 

非正則表達式的解決方案

如果您的查找/替換是真的那麼簡單,那麼你不要甚至不需要使用正則表達式。只要做一個標準的字符串替換:

$html = str_replace('[[signature]]', 'replaced!', $html);