2016-09-23 4 views
1

Ich habe eine Zeichenfolge, in der ich den Text [[signature]] mit einem bestimmten Wert ersetzen möchte, aber weil es codiert ist, sieht der Text wie %5B%5Bsignature%5D%5D.Regex ersetzen URL codierte Zeichenfolge

Wie ersetze ich dies mit einem regulären Ausdruck? Dieser Code-Schnipsel funktioniert, aber nur, wenn die Zeichenfolge codiert wird, nicht:

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

Warum verwenden Sie dann eine Regex? Verwenden Sie ['str_replace ('% 5B% 5Bsignatur% 5D% 5D', 'ersetzt!', $ Html)'] (https://ideone.com/Jsb31o) –

+0

Verwenden Sie den ['urldecode'] (http: // php.net/manual/en/function.urldecode.php) Methode in PHP verfügbar, bevor Sie Ihre Regex verwenden. – ThePerplexedOne

Antwort

4

Sie haben die folgende Zeichenfolge codiert, so dekodieren es nur dann führen Sie Ihre ersetzen.

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

Sie können es immer kodieren danach wieder, wenn Sie brauchen:

$html = urlencode($html); 

Nicht Regex Lösung

Wenn Ihr Suchen/Ersetzen wirklich so einfach ist, dann Sie don brauche nicht einmal Regex. Führen Sie einfach eine Standardzeichenfolge aus:

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