php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.02.2007, 15:34  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard Reguläre Ausdrücke

Hallo zusammen,

ich weiss das jetzt einige schrein, lies die Doku. Vor weg. das hab ich.

ich finde den Fehler nicht.. Reguläre Ausdrücke liegen mir einfach nicht.

folgendes Problem:"Ich filter mir aus einem html text die bilder die nur mit einem / (Slash) beginnen und ersäzte diese durch eine führende Domain. hoffe das ist verständlich.

leider kommt $text aus einem nicht gerade gutem CMS. Diese CMS kann nur html und kein xhtml.

Ich versuche mit dem letzten preg_replace() den Schlußtag ">" in ein " />" umzuwandeln. und das gelingt irgendwie nicht.

Die Domain einzufügen geht. jedoch beim Schlusstag häng ich gerade.

PHP-Code:
<?php
$ersatz 
"src=\"http://www.domain.tld/";
$text preg_replace("/src\=\"\//"$ersatz$text);
$text preg_replace("/(<img(.*))[>]/i","\\1 />",$text);
?>
Könnt Ihr euch das mal bitte ansehen? Danke
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.02.2007, 15:41  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

vllt solltest du einfach mal ein konkretes bsp. nennen

weil SO hab ich nix zum testen ob's klappt
M3g4Star ist offline  
Alt 27.02.2007, 15:45  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

ok ein Beispiel:

PHP-Code:
<?php $text='

abcde</p>

[img]/ordner/bild.jpg[/img]
</p>'
?>
und soll zu:
PHP-Code:
<?php $text='

abcde</p>

[img]http://www.domain.tld/ordner/bild.jpg[/img]
</p>'
?>
werden!
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Alt 27.02.2007, 16:10  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

http://www.regex-tester.de/index.php

hier zum testen

für deinen Problemfall vllt str_replace() benutzen. einfach ">" durch "/>" ersetzen .. ???
M3g4Star ist offline  
Alt 27.02.2007, 16:18  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

das problem dabei ist das nur das bild geändert werden darf.
z.B. aus
Code:
abcde</p>

[img]/ordner/bild.jpg[/img]
</p>
wird zurzeit:

Code:
abcde</p>


</p />
und genau das soll es nicht^^

Edit: vielleicht sollte ich noch dazusagen, dass ich nicht weiss wieviel bilder im text sind.
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Alt 27.02.2007, 16:32  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

ja das hast natürlich nicht dazu geschrieben.

Ich versuch auch wenn möglich den regulären Ausdrücken zu entfliehen.
Von daher würde ich an deiner Stelle auch das versuchen über die String Befehle von HP zu lösen.

Ansatz:

finde über strpos() "<img"
merke dir die Posotion.
suche ab der Position den nächsten Close-Tag ">"
ersetze diesen durch "/>"
M3g4Star ist offline  
Alt 27.02.2007, 17:01  
CIX88
Gast
 
Beiträge: n/a
Standard

Ich würde beim Suchpattern verstärkt auf "src" setzen, denn davor und dahinter können auch noch weitere Attribute stehen.

Zum Ansatz von M3g4Star gab es sogar mal ein Thread hier.
Weis aber nimmer wo das war ...
 
Alt 27.02.2007, 17:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

PHP-Code:
<?php
$text
='

abcde</p>

[img]/ordner/bild.jpg[/img]
</p>'

$ersatz "http://www.domain.tld/";
$text preg_replace('#(src\=")/#' '$1' $ersatz $text);
$text preg_replace('#(<img[^>]*?)/?>#i' '$1 />' ,$text);
?>
sollte gehen. regExpr sind keine Hexerei...

Anm.: da die Delimiter < und > nicht innerhalb des Tags vorkommen dürfen, ist die Angabe von [^>]* die einfachste Lösung das gesamte Tag zu erfassen.
Wichtig ist auch die Stelle
Zitat:
/?>
Ohne /? werden bereits mit /> beendete Tags zu //> umgewandelt. Alternativ kann man den Ausdruck so gestalten, dass die Ersetzung nur erfolgt, wenn am Ende > ohne / davor steht. Geschmacksache.
nikosch ist gerade online  
Alt 27.02.2007, 18:38  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

@nikosch77

Danke funktioniert^^
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
reguläre ausdrücke php, reguläre ausdrücke *

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:34 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.