2016-07-30 12 views
0

Ich versuche, dynamischen Text aus einer Zeichenfolge zu erhalten preg_match mitpreg_match dynamischer Text aus String und Echo

$desc = 'this is some text big <a href="//example.com/dynamicID">//example.com/dynamicID</a><br> and some more text here'; 

$desiredtext = preg_match("//example.com/.*?", $desiredtext, $desc); 

echo $desiredtext; //this should return me only //example.com/dynamicID 

Wie diesem Problem beheben?

Antwort

1

Versuchen Sie Folgendes: (! Aktualisiert)

if(preg_match("/(?<=href=")([^"]*)/", $desc,$matches)) $desiredtext=$matches[1]; 

Es verwendet eine Gruppe für Lookbehind href=" suchen. Die einfangende Gruppe ([^"]*) wird dann alles bis zum nächsten " greifen. Es liegt an Ihnen, die Regexp auf Ihre Anforderungen abzustimmen.

Antwort auf Ihren Kommentar:

Erweitere erste Suchgruppe () „example.com“ und dann bekommen Sie das Ergebnis von matches[1] statt matches[0] zu enthalten:

preg_match('/(example.com[^&]*)/',$desc,$matches); 
$part = $matches[1]; 
echo $part; 
+0

Vielen Dank für Ihre Antwort, aber das Problem ist, gibt es mehrere href im Text, wie Sie genau das finden, was wir brauchen? einige Male der gewünschte Text in 2. href und einige Male in 7. href. – KenDev

+0

Ihr zweites und drittes Argument ist umgekehrt, und Sie speichern 1, 0 oder 'FALSE', wo die Übereinstimmung gespeichert werden soll. – sidyll

+0

Können Sie genau beschreiben, was wir brauchen? Suchst du nach einer bestimmten URL oder stirbst es in bestimmten ''? – cars10m