2017-11-22 3 views
0

In PHP möchte ich überprüfen, eine Zeichenfolge, die eine Variable enthält, durch die Variable in meinem Test zu entkommen. Ich denke, dass es etwas zu ersetzen gibt random_id durch ein Token oder vielleicht eine Regex, aber ich bin nicht in der Lage, den guten Weg zu finden.Überprüfen Sie eine Zeichenfolge, die eine Variable enthält

Eine Idee?

Beispiel:

function test($string) { 
    if ($string == 'start/random_id/end') { 
     return 'random_id/end'; 
    } 
    } 

(random_id, die eine beliebige Zeichenfolge sein kann)

Antwort

1

Wenn Sie Wenn Sie nach dem Muster suchen, ist es vielleicht eine Option für Sie, eine Regex mitzu verwenden.

^start/(.+)/end$

Sie können Ihre random_id in einer Gruppe erfassen und $matches[1] mit verweisen.

Zum Beispiel:

function test($string) { 
    if (preg_match("/^start\/(.+)\/end$/", $string, $matches)) { 
     return "$matches[1]/end"; 
    } 
    return $string; 

} 

echo test("start/[email protected]#$/end") . PHP_EOL; 
echo test("/end") . PHP_EOL; 
echo test("start/[email protected]#$/en") . PHP_EOL; 
echo test("start//end") . PHP_EOL; 

, dass Sie würde:

[email protected]#$/end 
/end 
start/[email protected]#$/en 
start//end 

Gerade jetzt, wenn es nicht passt, der Eingang $string zurückgegeben wird, aber man könnte das ändern, was Sie wollen.

0

Edit: pro Kommentar aktualisiert ..

Dies sollte funktionieren:

function test($string) { 
    $prefix = "start/"; 
    $suffix = "/end"; 
    if (substr($string, 0, strlen($prefix)) === $prefix && 
     substr($string, -strlen($suffix)) === $suffix) { 

     return substr($string, strlen($prefix)); 
    } else { 
     return $string; // I guess? otherwise you return nothing.. 
    } 
} 
+0

Leider kann ich das nicht so machen, weil meine Testfunktion die $ randomId var nicht kennt ... Die $ string wird bereits an dieser Stelle verarbeitet. – Promo

+0

Ich habe den Code auf (was ich denke) aktualisiert. – xs0

Verwandte Themen