php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.09.2007, 11:52  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard reguläre ausdrücke, erster ansatz

hallo,
ich versuche mich grade das erste mal an regulären ausdrücken, da ich sie wohl sehr vernachlässigt habe.

zu der materie hab ich jedoch direkt eine frage, undzwar möchte ich es realisieren, das man in einem template z.b.

{var=variable|color:grey,weiteres CSS}

verwenden kann, es soll auch ein

{image=URL|CSS}

u.s.w. geben

nun habe ich das problem wenn ich mit preg_replace arbeite, mich beim ersetzen nicht auf die inhalte des zu ersetzenden beschrränken kann, weil die funktion dies wohl nicht vorsieht.
somit kann ich nicht dynamisch ersetzen, oder ?

d.h. ich könnte zwar {image} ersetzen aber nicht, wenn das bild im template vor diffiniert wurde ... default werte..
notyyy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.09.2007, 12:13  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
du kannst mit Klammern Blöcke gruppieren und dich beim Ersetzen dann mit $1, $2, .. darauf beziehen.

PHP-Code:
<?php
echo preg_replace("/(hallo|guten tag)\s+(.*)\!/i""Anrede: $1, Name: $2""Guten Tag Commander Bond!");
// Anrede: Guten Tag, Name: Commander Bond
?>
Zergling-new ist offline  
Alt 05.09.2007, 12:17  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

ahh,
vielen dank =)

wenn wir grade schonmal dabei sind, habt ihr vielleicht ein link eines guten tutorials über reguläre ausdrücke, was bei 0 anfängt ?

ergoogelt habe ich mir schon viel, aber die erklärungen sind immer recht dürftig ...
notyyy ist offline  
Alt 05.09.2007, 12:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Regenechsen (Wortspiel mit RegExp):
http://www.regenechsen.de/phpwcms/index.php?regex_allg
Zergling-new ist offline  
Alt 05.09.2007, 12:21  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Vielleicht hilft dir das ein wenig:
Regenechsen
Regex Elemente

Grüße
Da Psy

Edith sagt dazu:
Ui, da war Zergling schneller
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 05.09.2007, 17:08  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

vielen dank, die seite ist wirklich genial...

hab mal ein wenig rum probiert:

\{(image|var|media|css|js|function)=[a-zA-Z0-9\.\(\)\,]*\|{1}[a-zA-Z0-9=]*\}

sinn:

{function=foo(werte)|Some CSS}
notyyy ist offline  
Alt 05.09.2007, 19:06  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

{1} kannst du weglassen, ist implizit.
Zergling-new ist offline  
Alt 06.09.2007, 10:57  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

nun kann ich zwar ein wenig regex schreiben, aber irgendwie nicht verwenden, warum geht dies nicht:

PHP-Code:
<?php
$zeichenkette 
'{SYS-CLOSE-4353456|}
<html>
<head>
<title>
</title>
<body>
 <div>{SYS-CLOSE-lol|sdfdf}</div>
</body>
[url="http:www.google.de/lohel.de?x=%"]dsfdf[/url]
</html>'
;

$suchmuster[0] = '/\<a[ a-zA-Z\"\'\=0-9]*href="[a-zA-Z0-9\"\&\?\'\-\_\/\\\:\.\=\%]*"\>[a-zA-Z0-9]*\<\/a\>/i';
#$ersetzungen[0] = $2;

var_dump(preg_replace($suchmuster"Zeichen: $1$2$3$4$5$6$7$8$9$10$11"$zeichenkette));
?>
die $1-$11 sind leer ....
oder liegt es an preg_replace ?
notyyy ist offline  
Alt 06.09.2007, 11:25  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du gruppierst nicht, kannst somit auch nicht auf die $-Zahlen zugreifen. Irgendwas kannst du mit .* testen, da brauchst du keine irrsinnig lange Zeichenliste.
Zergling-new ist offline  
Alt 06.09.2007, 12:47  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

also () drum setzen ? danke mit dem .* tipp, spart mir bestimmt viel tipp zeit. =)
notyyy 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
Ajax Chat Ansatz notyyy PHP Tipps 2008 3 02.01.2008 23:47
Brauch nen Ansatz b++ PHP Tipps 2005-2 8 17.06.2005 17:59
Charaktertest in php? Ansatz gesucht PHP Tipps 2005-2 2 17.06.2005 16:14
Ansatz: Datei in Datenbank abspeichern c-f-g PHP Tipps 2005-2 2 07.06.2005 14:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace zeichenliste

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