php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.01.2012, 14:37  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
xasher befindet sich auf einem aufstrebenden Ast
Standard Ersetzen, außer in Links

Hallo zusammen,

ich will auf meiner Seite bei bestimmten Fachbegriffen ein Popup mit Erklärung einbinden. Jetzt kam es vor, dass eine Erklärung wiederum ein Fachbegriff enthält, der dann wieder ersetzt wurde durch ein Popup. Da schlimme dabei ist, dass dabei der eigentliche Link zerstört wird. Jetzt möchte ich, wenn ich meinen Text durchsuche nur die Worte ersetzen, die nicht innerhalb eines Links stehen

Zum Beispiel:
PHP-Code:
$s 'Test';
$repl 'bla';
$text ="Das ist ein Test. <a href=\"www.test.de\">Test</a> Ein Test folgt danach";
$text preg_replace("/((<a[^a>].*)|$s)/ie"'"\2"=="\1"? "\1":"'.$repl.'"'$text);
echo 
$text
Das liefert im Quelltext:
Code:
Das ist ein bla. <a href="www.test.de">Test</a> Ein Test folgt danach
Ich suche aber eine Möglichkeit, dass nach dem Link die Zeichenfolge auch ersetzt wird, also so:
Code:
Das ist ein bla. <a href="www.test.de">Test</a> Ein bla folgt danach
Wäre schön, wenn ihr mir helfen könntet.

Viele Grüße
xasher
xasher ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.01.2012, 14:38  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

[MOD: Verschoben]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 11.01.2012, 14:42  
meikel
Gast
 
Beiträge: n/a
Standard

Wie ersetze ich in einem Text, jedoch nicht innerhalb von HTML-Tags?
http://www.php-faq.de/q-regexp-ersetzen.html
 
Alt 11.01.2012, 14:45  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
xasher befindet sich auf einem aufstrebenden Ast
Standard

Das Beispiel ist von da. Entweder habe ich was falsch, aber es funktioniert nicht ganz so wie es sollte.

Danke aber schon mal

Viele Grüße
xasher

Nachtrag: Das genannte Beispiel ersetzt innerhalb des Tags nicht <a href...>. Der Linktext (<a ...>Test wird zu bla</a>) wird trotzdem ersetzt

Geändert von xasher (11.01.2012 um 14:50 Uhr).
xasher ist offline  
Alt 12.01.2012, 11:52  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
xasher befindet sich auf einem aufstrebenden Ast
Standard

Hallo zusammen,

ich bin nun ein Stückchen weitergekommen.

Mit diesem preg_replace...
PHP-Code:
$s 'Test';
$repl 'bla';
$text ="Das ist ein <b>Test</b>. <a href=\"www.test.de\">Test</a>  folgt Test danach";
$text preg_replace("/((<a .*>.*<\/a>)|$s)/ie"'"\2"=="\1"? "\1":"$repl"'$text); 
erhalte ich den eigentlich gewünschten Quelltext
Code:
Das ist ein <b>bla</b>. <a href="www.test.de">Test</a>  folgt bla danach
Allerdings wenn danach wieder ein Link kommen sollte:
PHP-Code:
$s 'Test';
$repl 'bla';
$text ="Das ist ein <b>Test</b>. <a href=\"www.test.de\">Test</a>  folgt Test danach <a href=\"www.test.de\">Test</a>  folgt Test danach";
$text preg_replace("/((<a .*>.*<\/a>)|$s)/ie"'"\2"=="\1"? "\1":"$repl"'$text); 
... sind wir wieder am Anfang. Der Quelltext sieht dann so aus:
Code:
Das ist ein <b>bla</b>. <a href="www.test.de">Test</a>  folgt Test danach <a href="www.test.de">Test</a>  folgt bla danach
anstelle:
Code:
Das ist ein <b>bla</b>. <a href="www.test.de">Test</a>  folgt bla danach <a href="www.test.de">Test</a>  folgt bla danach
Also das "Test" zwischen den Links wird nicht ersetzt, sondern nur vor einem Link und nach dem letzten Link. Ist schon komisch - ich komme an der Stelle jetzt gerade nicht weiter.

Ich wäre super dankbar für Hinweise.

Viele Grüße
xasher
xasher ist offline  
Alt 13.01.2012, 21:00  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Anmerkung zu Multipostings

http://phpforum.de/forum/showthread.php?t=267645

Gruß Jens
Jens Clasen ist offline  
Alt 13.01.2012, 22:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

[MOD: Thread geschlossen]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Thema geschlossen


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
Mein Kumpel ModRewrite - alles außer Ordner ersetzen martinch Server, Hosting und Workstations 4 04.01.2011 15:48
Links aus Datenbank in den HTML-Code einfügen Holger69 Datenbanken 20 23.08.2010 17:47
[Erledigt] Parsen mit DOM - Links auslesen bish PHP Tipps 2010 11 11.08.2010 19:59
String aufteilen und links herausfiltern NeoPow PHP Tipps 2010 15 03.08.2010 21:18
Ersetzen von "Links" marcphilipps PHP Tipps 2010 0 19.05.2010 15:34
Script zum auslesen von Links Lunix PHP Tipps 2010 7 16.03.2010 12:28
[Erledigt] Regular Expressions - Suchen und dynamisch Ersetzen AllOnline PHP Tipps 2010 25 02.02.2010 23:35
[Erledigt] Leereichen und Umlaute ersetzen thiagojonas PHP Tipps 2009 13 06.07.2009 15:03
[Erledigt] Links in p unterstreichen, aber nicht die Bilder feuervogel HTML, Usability und Barrierefreiheit 7 13.04.2009 10:28
Links vom Untermenü in Container öffnen Surfer PHP Tipps 2008 0 27.12.2008 19:24
Links im Text GELight PHP Tipps 2006 3 13.10.2006 17:35
Darstellung von Links ohne Parameter seven-12 PHP Tipps 2006 4 16.02.2006 15:31
Bestimmte Worte durch Links ersetzen PHP Tipps 2006 4 15.02.2006 19:19
Tabelle ganz links lalala HTML, Usability und Barrierefreiheit 1 06.07.2005 14:29
[Erledigt] includ. Text ersetzen ohne vars PHP Tipps 2004 3 13.09.2004 23:16


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