2016-07-30 9 views
-2

Ich möchte unerwünschten Text aus Zeichenfolge entfernen.preg_match Entfernen Sie unerwünschten Text aus der Zeichenfolge

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

$part = $matches[1]; 

echo $part; //returning example.com/dynamicID">dynamicID</a><br> and... 

Aber ich möchte nur (example.com/dynamicID) und den Rest des Textes aus String entfernen.

Was fehlt mir hier?

+0

Nicht reproduzierbar. https://eval.in/614467 Ich vermute, '$ description' ist anders als vorgesehen. – chris85

+0

Ja seine anders als vorgesehen, weil '$ description' ist dynamisch und unterscheidet sich in allen Zeiten, aber example.com/dynamicID ist der Fokus – KenDev

+0

Änderung' (example.com ([^ &] *)?) 'Zu extrahieren, um' (example.com ([^ "] *)?)' Ersetzen '[^ &]' mit '[^"] 'Da es kein' & 'gibt, aber es gibt ein' "' siehe: https: // regex101. com/r/cG9kS3/1 – ArtisticPhoenix

Antwort

1

Sie sind in der Nähe. Ich nehme an, Sie die URL Teil des Textes nehmen wollen (auch bekannt als vor dem letzten Zitat auf <a> Tag.

Alles, was Sie tun müssen, ist ?" nach ) hinzufügen, um sicherzustellen, dass Sie versuchen, so kurz wie möglich alle Zeichen übereinstimmen vor dem Angebot

Dabei enthalten die resultierenden $ matches [0] jedoch auch das Anführungszeichen.Sie können Abhilfe schaffen, indem Sie eine Gruppe zu dem hinzufügen, was Sie tatsächlich abgleichen möchten, und nehmen $ Übereinstimmungen [1] als Ergebnis Nachstehend ist Ihr Code mit den 2 Änderungen, die ich oben erwähnt habe, geändert:

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

var_dump($matches); 

Der Ausgang ist wie folgt:

array(3) { 
    [0]=> 
    string(22) "example.com/dynamicID"" 
    [1]=> 
    string(21) "example.com/dynamicID" 
    [2]=> 
    string(10) "/dynamicID" 
} 
+0

ich habe aktualisiert meine Frage nach Ihrem Vorschlag, aber es ist immer noch das gleiche Ergebnis – KenDev

+0

ich gerade versucht, kopieren Sie den Code in Ihrer Frage einfügen und gut laufe Arbeits , es funktioniert für mich. Versuchen Sie 'var_dump ($ matches)', um zu sehen, was Sie tatsächlich bekommen. – maresa

+0

ok ich diese mit 'var_dump bin immer ($ matches)' Ergebnisse 'Array (3) {[0] => string (3274) "example.come/dynamicID" dynamicID
und ... ' – KenDev