php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.04.2009, 01:24  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard [Erledigt] regulärer Ausdruck, neg. Lookbehind

Hi!
Ich habe mir einen regulären ausdruck gebaut, welcher alle relativen source-Angaben (src) von Bildern absolut machen soll! Dazu habe ich schon eine Variable $w für den "Stammbaum" der Datei, also z.B. http://www.example.com/ordner/ und dann will ich, wenn jetzt z.B. src="http://www.php.de/images/img.gif" vorkommt, es zu src="http://www.example.com/ordner/images/img.gif" geändert wird...
Das ist jetzt nicht mein problem, denn es hat gut geklappt, doch ich habe nun ein Problem zu einem negativen Lookbehind!
Ich wollte, dass nur die source-Attribute geändert werden, die nicht mit http:// beginnen (und somit bereits absolut sind).
Die Fehlermeldung:
Code:
Warning: preg_replace() [function.preg-replace]: Compilation failed: unrecognized character after (?< at offset 15 in /data/apache/..../..../..../www/anonym.php on line 28
Zeile 28 ist dann der reguläre Ausdruck:
PHP-Code:
$text preg_replace("!src=('|\"){1}(?<\!http://)(.*?)('|\"){1}!i",'src="'.$w."$3\"",$text); 
Anscheinend funktioniert es nicht, da der Lookbehind auf (.*?) folgt, doch wie kann ich das so machen, dass es funktioniert?
Bitte helft mir!
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

Geändert von Felk (06.04.2009 um 01:34 Uhr).
Felk ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.04.2009, 04:17  
Benutzer
 
Registriert seit: 03.04.2009
Beiträge: 66
ostems befindet sich auf einem aufstrebenden Ast
Standard regulärer Ausdruck, neg. Lookbehind

Probier mal so...
PHP-Code:
$text preg_replace("!src=('|\"){1}(?>\!http://)(.*?)('|\"){1}!i",'src="'.$w."$3\"",$text); 
Spitze Klammer (?<) nach dem ersten ? andersrum ??

bin mir aber nicht sicher...
nur das diese Fehlermeldung meist was mit fehlenden spitzen Klammern
auf sich hat...
ostems ist offline  
Alt 06.04.2009, 14:40  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Gut, der Fehler ist weg, doch es funktioniert jetzt nichtmehr...
folgendes ersetzt preg_replace nicht:
<img src="img.gif" />

wie als ob (?>\!http://) nicht ausschließend wirkt...
bis jetzt sieht das ganze nun so aus:
PHP-Code:
$text preg_replace("!src=('|\"){1}(?>\!http://)(.*?)('|\"){1}!i",'src="'.$w."$3\"",$text); 
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)
Felk ist offline  
Alt 06.04.2009, 17:09  
Benutzer
 
Registriert seit: 03.04.2009
Beiträge: 66
ostems befindet sich auf einem aufstrebenden Ast
Standard regulärer Ausdruck, neg. Lookbehind

evtl hilft die das weiter...

HilfDirSelbst.ch: Lesezeichen : lookbehind

oder eher noch das...

Regex Tutorial - Lookahead and Lookbehind Zero-Width Assertions
ostems ist offline  
Alt 06.04.2009, 18:40  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Nein, tut mir Leid, aber das hilft mir nicht weiter...
Ich wende den Lookbehind ja richtig an (soweit ich das sehe).
Ich will nur ausschließen können, dass KEIN http:// nach dem src=" bzw. src=' vorkommt...

bitte helft mir, schonmal danke im voraus
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)
Felk ist offline  
Alt 06.04.2009, 21:30  
Benutzer
 
Registriert seit: 03.04.2009
Beiträge: 66
ostems befindet sich auf einem aufstrebenden Ast
Standard

was zeigt denn echo $text; an?
ostems ist offline  
Alt 06.04.2009, 21:42  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Ziemlich viel... aber hier mal ein Ausschnitt von einem IMG-tag (Vorher-nachher):

Vorher:
Code:
<img src="adwords_img.gif" border="0" height="215" width="467">
Nachher:
Code:
<img src="adwords_img.gif" border="0" height="215" width="467">
Aha... naja der reguläre ausdruck spricht das garnicht erst an...
Code:
$text = preg_replace("!src=('|\"){1}(?>\!http://)(.*?)('|\"){1}!i",'src="'.$w."$3\"",$text);
ohne das ">" wäre wieder die Fehlermeldung (siehe 1. Beitrag).
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)
Felk ist offline  
Alt 06.04.2009, 22:01  
Benutzer
 
Registriert seit: 03.04.2009
Beiträge: 66
ostems befindet sich auf einem aufstrebenden Ast
Standard

Hm... haab gerade ein paar fehlversuche gehabt...
bin mir auch nicht sicher wo es hakt

Geändert von ostems (06.04.2009 um 22:04 Uhr).
ostems ist offline  
Alt 06.04.2009, 22:15  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Kann ich nur hoffen, dass ein erfahrener PHP-Programmierer weiß, wie man einen Lookbehind bzw. einen Lookahead zwischen ('|\") und (.*?) anwenden kann... oder wie man ausschließt, dass (.*?) mit http:// beginnt
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)
Felk ist offline  
Alt 06.04.2009, 22:17  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

was du brauchst ist eine negative lookahead assertion

Geändert von Asipak (06.04.2009 um 22:30 Uhr).
Asipak ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] regulärer ausdruck: negation einer zeichenkette Asipak PHP Tipps 2009 5 17.03.2009 15:37
Regulärer Ausdruck Andreas PHP Tipps 2009 1 02.03.2009 15:49
Regulärer Ausdruck für Preis (float) Ticos PHP Tipps 2007 13 06.03.2007 20:21
[gelöst] Regulärer Ausdruck. Ich komme nicht weiter. Ticos PHP Tipps 2007 5 03.02.2007 09:55
regulärer ausdruck farant PHP Tipps 2006 3 05.10.2006 12:19
Problem mit dem Escapen in einem reg. Ausdruck ??? Frank Burian HTML, Usability und Barrierefreiheit 4 07.07.2006 00:02
Regulärer Ausdruck um <> zu entfernen innerhalb von XM becks123 PHP Tipps 2006 25 16.05.2006 15:06
Problem mit Regulärem Ausdruck. daniel987 PHP-Fortgeschrittene 2 05.03.2006 22:12
Regulärer Ausdruck: Ping-Zeiten speichern mAy^daY Server, Hosting und Workstations 9 12.01.2006 19:51
[Erledigt] komplizierter regulärer Ausdruck PHP-Fortgeschrittene 2 26.12.2005 20:00
Problem mit regul�rem Ausdruck BastianX75 PHP Tipps 2007 5 14.12.2005 14:38
[Erledigt] Regulärer Ausdruck HILFE!! PHP-Fortgeschrittene 6 22.07.2005 16:39
Regulärer Ausdruck mit Negation? PHP-Fortgeschrittene 23 21.07.2005 09:01
Regulärer Ausdruck inu PHP Tipps 2004-2 8 18.11.2004 18:07
regulärer Ausdruck zum dynamischen ersetzen in einem templat robo47 PHP Tipps 2004 3 02.11.2004 08:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
reguläre ausdrücke ausschließen, regulärer ausdruck text ausschließen, regulärer ausdruck ausschließen, reguläre ausdrücke lookahead, php look behind, lookbehind regulärer, php reguläre ausdrücke lookbehind, http://www.php.de/php-einsteiger/53814-erledigt-regulaerer-ausdruck-neg-lookbehind.html, reguläre ausdrücke erstes vorkommen php preg_replace, lookbehind php, reguläre ausdrücke tutorial, php lookbehind, preg_replace lookbehind, regulärer ausdruck lookahead php, php \look behind\ or, php preg_replace lookahead lookbehind, regulärer ausdruck beginnt nicht mit, php negative look-ahead assertion, reguläre ausdrücke negativ, negative look-ahead assertion html tag

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum