2016-05-01 21 views
1

Ich habe eine Teilzeichenfolge wie {[variable_name]} und möchte sie durch den Wert der in Klammern angegebenen Variablen ersetzen.Ersetze Zeichenfolge durch regex mit spezifischem Wert

Dies ist mein regulärer Ausdruck, aber ich habe keine Ahnung, was ich als nächstes tun soll. Wie kann ich?

+1

Werfen Sie einen Blick auf 'preg_replace_callback()'. Da Sie dann im Callback auf dynamische Variablennamen zugreifen müssen, müssen Sie 'global' mit Variablenvariablen verwenden. – Rizier123

+0

Oder zusätzlich zu @ Rizier123 der Befehl 'use'. – Jan

+0

@Jan OP kann 'use()' nicht verwenden. Denken Sie darüber nach: OP wird den Wert des Variablennamens im Matches-Array erhalten, der an den Callback übergeben wird. Er kann es also nicht in 'use()' verwenden. – Rizier123

Antwort

1

Neben dem Kommentar, das funktionieren würde:

<?php 
$replacements = array(); 
$replacements["var1"] = "New variable here"; 
$regex = '~\{\[([^]]+)\]}~'; 

$string = "This is some string with {[var1]} in it"; 
$string = preg_replace_callback(
    $regex, 
    function ($match) use ($replacements) { 
     return $replacements[$match[1]]; 
    }, 
    $string); 
echo $string; 
# This is some string with New variable here in it 
?> 

eine Demo Siehe on ideone.com.

Verwandte Themen