!!!Hilfe zu preg_replace Funktion!!!

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.
Antworten
Benutzeravatar
xconnect
Mitglied
Beiträge: 277
Registriert: 19.03.2009 15:43
Wohnort: Berlin
Kontaktdaten:

!!!Hilfe zu preg_replace Funktion!!!

Beitrag von xconnect »

Hi@all,

ich versuche gerade ein Problem zu lösen, das bei mir dazu führt, das ich mir die Haare raufen muss... :grin:

Ich verwende den Auto_Video_Embed v.0.02 Mod von 4seven und wollte diesen mit Highslide optimieren. Allerdings scheitere ich immer wieder an der preg_replace Funktion von phpbb.

preg_replace nimmt ja einen String her und ersetzt diesen durch den nächsten String, also: preg_replace = string1, string2 (string2 ersetzt string1)

Nun zu meinem Problem: (es dreht sich um diese Codezeilen:)

Code: Alles auswählen

if (($youtube) && (strpos($message, '/watch?v=') !== false)){
$message = preg_replace('#<a class="postlink" href="http:\/\/(.*?).youtube.(.*?)\/watch\?v=(.*?)">(.*?)<\/a>#U',
'<a class="highslide" href="http://$1.youtube.$2/v/$3.swf" onclick="return hs.htmlExpand(this, {objectType: 'iframe', width: 425, height: 388, wrapperClassName: 'draggable-header'})"><img style="width: 130px; height: 97px;" src="http://i.ytimg.com/vi/$3/default.jpg" /></a>', $message);
}
... wobei $youtube eine boolesche Variable ist und die Funktion strpos(StringA,StringB) einen booleschen Wert zurückgibt ob StringB in StringA enthalten ist. (soviel zur Bedingung)
... die ECHTEN PROBLEMKINDER sind folgender Ausschnitt: objectType: 'iframe' UND wrapperClassName: 'draggable-header'
Da hier wie man an den Anführungsstrichen gut sieht in der HTML-Erszetzung Strings in Strings genutzt werden... und genau das klappt nicht!
Hat jemand da eine tolle Idee, wie man dieses Problem lösen kann?
Für Ideen wäre ich dankbar!

Wie immer LG
xconnect
Wie immer... liebe Grüße
Nicolas Lehmann (xconnect)
Benutzeravatar
Balint
Mitglied
Beiträge: 1815
Registriert: 25.01.2003 21:43
Wohnort: Stuttgart
Kontaktdaten:

Re: !!!Hilfe zu preg_replace Funktion!!!

Beitrag von Balint »

Hallo,

falls tatsächlich alles andere klappt, muss man die einfachen Hochkommata einfach nur escapen, also ein Backslash davor schreiben (siehe auf http://php.net/manual/en/language.types.string.php)

Also statt deinem Code ein

Code: Alles auswählen

if (($youtube) && (strpos($message, '/watch?v=') !== false)){
$message = preg_replace('#<a class="postlink" href="http:\/\/(.*?).youtube.(.*?)\/watch\?v=(.*?)">(.*?)<\/a>#U',
'<a class="highslide" href="http://$1.youtube.$2/v/$3.swf" onclick="return hs.htmlExpand(this, {objectType: \'iframe\', width: 425, height: 388, wrapperClassName: \'draggable-header\'})"><img style="width: 130px; height: 97px;" src="http://i.ytimg.com/vi/$3/default.jpg" /></a>', $message);
}

Viele Grüße,
Bálint
Meine MODs für phpBB 2.x und phpBB 3.x!
Benutzeravatar
xconnect
Mitglied
Beiträge: 277
Registriert: 19.03.2009 15:43
Wohnort: Berlin
Kontaktdaten:

Re: !!!Hilfe zu preg_replace Funktion!!!

Beitrag von xconnect »

Hi Balint!

Vielen lieben Dank! :grin:

Das Problem ist somit gelöst! :D :D :D

Wie immer LG xconnect
Wie immer... liebe Grüße
Nicolas Lehmann (xconnect)
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: !!!Hilfe zu preg_replace Funktion!!!

Beitrag von cYbercOsmOnauT »

Nur zur Vollständigkeit...
xconnect hat geschrieben:..und die Funktion strpos(StringA,StringB) einen booleschen Wert zurückgibt ob StringB in StringA enthalten ist.
Diese Aussage ist falsch. strpos gibt die Position eines Strings innerhalb eines anderen an. Beispiel:

Code: Alles auswählen

strpos('Hallo Werner', 'allo')
gibt als Wert 1 zurück (weil mit 0 links zu zählen angefangen wird). Ist jedoch StringB in StringA nicht enthalten gibt strpos den boolschen Wert false zurück. Nur dann ist die Rückgabe ein boolscher Wert, sonst ist es Integer.

Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
xconnect
Mitglied
Beiträge: 277
Registriert: 19.03.2009 15:43
Wohnort: Berlin
Kontaktdaten:

Re: !!!Hilfe zu preg_replace Funktion!!!

Beitrag von xconnect »

Hi Tekin,

macht Sinn, da ja der Name der Funktion schon selbsterklärend ist "strpos = StringPosition" :grin:

Aber das ist ja nun unwesentlich für die Aufgabe...

Trotzdem Danke für den Hinweis...

Wie immer LG xconnect
Wie immer... liebe Grüße
Nicolas Lehmann (xconnect)
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: !!!Hilfe zu preg_replace Funktion!!!

Beitrag von gn#36 »

So ganz unwichtig ist das nicht: Wenn dein zu suchender String direkt am Anfang beginnt, dann ist das Ergebnis 0, was einem false entspricht. Nur wenn du mit === bzw. !== prüfst kannst du beide unterscheiden.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Coding & Technik“