2016-07-04 21 views
1

preg_match funktioniert nicht mit dynamischen PHP-Variable.preg_match funktioniert nicht mit PHP-Variable

if (preg_match('/abc.com|xyz.com\b/', $m[0])) { 

Above Spiel funktioniert gut, aber wenn ich sende Werte PHP-Variablen verwenden, dann ist es nicht funktioniert

$string = 'abc.com|xyz.com'; 
if (preg_match('/'.$string.'\b/', $m[0])) { 

ich denselben Wert in $ string Variable schicke aber es funktioniert immer noch nicht. Bitte helfen Sie.

+6

Sollte genau das gleiche funktionieren. Bitte gib uns einen [mcve]. Wissen Sie auch, dass '.' bedeutet, dass Sie mit einem beliebigen Zeichen übereinstimmen? Und '|' ist für Alternativen? – Rizier123

+1

was ist der Wert von $ m [0] '??? –

+1

$ m [0] hat vollen Inhalt einer Geschichte .. Ich möchte alle Links aus der Geschichte entfernen .. aber ein paar .. – Sachin

Antwort

0

Es funktionierte für mich jetzt. Wie ich es innerhalb preg_replace_callback verwendet habe So muss es in ihm zu deklarieren. danke

0

Wie Sie die preg_replace_callback erwähnt haben, ist das Problem wahrscheinlich mit der Tatsache, dass Sie die Variable an die Funktion mit use Schlüsselwort übergeben müssen.

Siehe unten PHP snippet zeigen, dass:

$string = 'abc\.com|xyz\.com'; 
$s = "Some long string with http:". "//sub.abc.com inside"; 
$res = preg_replace_callback('~http://\S+~', function ($m) use ($string) { 
    if (preg_match('/\b(?:'.$string.')\b/', $m[0])) { 
     return "GOOD_URL"; 
    } else { 
     return "BAD_URL"; 
    } 
}, $s); 
echo $res; 

Beachten Sie, dass die Punkte im Inneren des RegexMuster entwertet werden müssen.