Ohne einen vollwertigen Parser zu verwenden, kann dies in den meisten Situationen der Fall sein ...
%Vor% Es verwendet ein negatives Lookbehind , um sicherzustellen, dass kein href="
oder href='
davor steht.
Berücksichtigt auch Personen, die ihre Attributwerte mit '
begrenzen.
Ich habe es einfach in IDEone.com versucht und es hat den gewünschten Effekt.
In diesem einfachen Fall funktioniert die Funktion preg_replace
wahrscheinlich. Um mehr Stabilität zu erhalten, verwenden Sie DOMDocument
:
funktioniert sowohl für http: // als auch für https: //
Jeder einfache reguläre Ausdruck oder String-Ersetzungscode wird wahrscheinlich im allgemeinen Fall fehlschlagen. Der einzige "richtige" Weg, dies zu tun, besteht darin, den Chunk als SGML / XML-Snippet zu analysieren und http://
aus dem Wert zu entfernen.
Für jeden anderen (einigermaßen kurzen) String-Manipulationscode wird es ziemlich einfach sein, ein Gegenbeispiel zu finden, das es bricht.
Wenn angenommen wird, dass "http: //" in $ string immer zweimal auftritt, suchen Sie die Zeichenfolge "http: //" mit strripos rückwärts. Wenn die Suche erfolgreich ist, kennen Sie den start_index von "http: //", den Sie entfernen möchten (und Sie kennen die Länge des Kurses). Jetzt können Sie substr verwenden, um alles zu extrahieren, was vor und nach dem zu entfernenden Block geht.