Wildcard

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

Wildcard

Beitrag von kird1 »

Hallo,

ich möchte einen String ersetzen, einen variablen Teil davon aber übernehmen - ich habe schon ein bissel rumprobiert, aber mit "%" oder "*" funktioniert es nicht, da ich die korrekte Syntax nicht kenne. (und auch beim Suchen über Google nichts gefunden habe, was mir weiterhilft)

Was muß an die Stelle von "(beliebige Zeichenfolge)" ?

Code: Alles auswählen

$message = str_replace('<a href="http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank" rel="nofollow">', '<a href="http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank">', $message);

Danke
kird1
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo kird1,

schau dir das mal an, da wird alles gut erklärt http://de2.php.net/preg_replace. Mir hat es damals gut geholfen.

Probiers mal mit (.*?)

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

Beitrag von kird1 »

funktioniert leider nicht - offensichtlich findet er damit gar nicht erst den Suchstring.

Code: Alles auswählen

$message = str_replace(<a href="http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/(.*?)" target="_blank" rel="nofollow">', '<a href="http://www.meinforum.de/(.*?)" target="_blank">', $message);
was könnte ich noch probieren?

Grüße
kird1
Benutzeravatar
djchrisnet
Mitglied
Beiträge: 1275
Registriert: 29.06.2007 15:52
Wohnort: Elmshorn
Kontaktdaten:

Beitrag von djchrisnet »

ich denke mal sie meinte ohne ()
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

kird1 hat geschrieben:funktioniert leider nicht - offensichtlich findet er damit gar nicht erst den Suchstring.
  1. falsche Funktion: str_replace != preg_replace
  2. Handbuch zu regulären Ausdrücken lesen (siehe Link von Helmut bzw. Suchmuster-Syntax)
:wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

Beitrag von kird1 »

Der Link hilft mir nicht - wenn ich verstehen würde, was da steht - bräuchte ich nicht fragen

Gruß
kird1
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Dann eben so:

Code: Alles auswählen

$string = preg_replace('#<a href="http://url-vorher.de/([^"]+)">#', '<a href="http://url-nachher.de/$1">', $string);
Damit du auch noch was dabei lernst:
  • Die beiden # am Anfang und am Ende des Suchstrings (erster Parameter) begrenzen das Suchmuster.
  • ([^"]+) ist eine Zeichenreihenfolge, die mindestens ein Zeichen lang ist (dafür ist das + zuständig) und kein " enthält ([^"] beschreibt solch eine Zeichenreihenfolge. Eckige Klammern umschließen eine Zeichenklasse, ^ am Anfang einer Zeichenklasse negiert die Zeichenklasse und " ist in diesem Fall das Zeichen, das nicht in der Zeichenklasse vorkommen darf.).
  • Da die Zeichenreihenfolge in Klammern steht, kann sie im Ersetzungsstring (zweiter Parameter) mit $1 (1, weil erste Klammer) angesprochen werden.
Helmuts Vorschlag würde zwar auch funktionieren, allerdings sollte man wenn möglich gierige Quantifiers (also nicht *? oder +?, sondern nur * oder +) verwenden, da diese schneller sind.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

Beitrag von kird1 »

Danke - ganz besonders auch für den 2ten Teil!
(denn eben dies sind die Grundlagen, die mir fehlen)

Gruß
kird1
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

Beitrag von kird1 »

funktioniert leider nicht - ich hab auch bis jetzt damit herumprobiert, aber leider nichts erreicht.
Wenn ich den Codeschnipsel von Dir (natürlich auf meine URL angepasst) verwende, sind die Postings im Forum komplett verschwunden (egal ob Link darin oder nicht) und es stehen nur noch die Signaturen da. Die Error-Log bringt aber keine Erhellung - es gibt keinen Eintrag dafür.

Das einzige, was funktioniert, ist das hier:

Code: Alles auswählen

$message = str_replace('http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/', 'http://www.meinforum.de/', $message);

aber da fehlt halt die Hälfte........wenn ich Latein hätte, wär ich jetzt damit am Ende ;)

Grüße
kird1
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Zeig mal deine angepasste Version, bitte.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“