2016-09-30 1 views
1

ich die folgenden Zeichenfolgen haben:Vorkommen von String ersetzen, um eine regex entsprechenden

$a = "test1"; 
$b = "test 2"; 
$c = "test<3"; 
$d = "test&4"; 

ich Vorkommen von einigen Buchstaben von „&“ gefolgt ersetzen möchte und enden mit einem „;“. sein

sollte die Ausgabe:

$a = "test1"; 
$b = "test 2"; 
$c = "test 3"; 
$d = "test&4"; 

Wie kann ich das mit PHP?

Antwort

2

verwenden:

$x = preg_replace('/&[a-z]+;/', ' ', $b); 
echo $x; 
4

In diesem speziellen Fall, müssen Sie einen regulären Ausdruck nicht brauchen, wahrscheinlich, was Sie brauchen, ist die HTML-Entitäten zu entschlüsseln, und das kann mit html_entity_decode(), wie in getan werden:

$a = html_entity_decode("test1"); 
$b = html_entity_decode("test 2"); 
$c = html_entity_decode("test<3"); 
$d = html_entity_decode("test&4"); 

var_dump($a,$b,$c,$d); 
+1

diese Lösung liefert '" tes t <3 "', während OP "test 3" braucht. –

1

Die Antwort von @ this.lau_ ist die beste, aber wenn Sie die regexp wollen, versuchen Sie diese

(\&)([a-z]{1,4})(;)