php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.11.2008, 12:55  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 4
giga befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Teilstring zwischen zwei Markeren austauschen

Hallo da draußen!

Bin neu hier und in php und habe folgendes Problem.
Ich habe eine Text und darin befinden sich mehrer Teile mit <link>....Text...</link>, die ich gerne durch einen anderen Teilstring austauschen möchte.
Mein Code dazu:

PHP-Code:
function linksearch($text)
{           
          
preg_match_all("!<link(.*)/link>!i",$text,$a,PREG_SET_ORDER);
              
          if (
$a[0]) {
                           
               
$i 0;
               
$temp $text;
               foreach (
$a as $c ) {
                    
                   
$temp preg_replace("!<link(.*)/link>!i","<a href=\"http://meineSeite.at\"".$c[$i]."</a>",$temp,-1,$c[$i]);                 
               
               
$i++;
               }
          
$text $temp;    
          return 
$text;
          break;
          }
          else
         
         return 
$text
   

Funktioniert auch so weit so gut, doch im HTML steht dann etwa folgendes:

Code:
<a heref="http://www.....><link>...text...</link></a>
Aber ich will das ganz <link></link> wegbringen und nur noch <a href="..">...Text...</a> stehen haben.

Weiss aber nach langem suchen und probieren nicht mehr weiter.

Danke im Voraus

Christopher
giga ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.11.2008, 13:15  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 1
p.abend befindet sich auf einem aufstrebenden Ast
Standard

Hi Christopher,

versuch doch einfach mit der Funktion Str_Replace() <link> und </link> zu entfernen.
p.abend ist offline  
Alt 27.11.2008, 13:18  
md5
Benutzer
 
Registriert seit: 21.09.2008
Beiträge: 69
md5 befindet sich auf einem aufstrebenden Ast
Standard

ersetze mal:
PHP-Code:
preg_replace("!<link(.*)/link>!i","<a href=\"http://meineSeite.at\"".$c[$i]."</a>",$temp,-1,$c[$i]); 
durch:
PHP-Code:
preg_replace("#<link>(.*?)</link>#i","<a href=\"http://meineSeite.at/$1\"</a>",$temp); 
hoffe hab jetzt kein fehler gemacht...
md5 ist offline  
Alt 27.11.2008, 13:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Solange wir nicht wissen, was ursprünglich zwischen <link> steht, beschränlen wirt uns eben auf Raten
Auf jeden Fall ist $c[$i] schon mal Quatsch, weil für PREG_SET_ORDER der Schlüssel für jeden Datensatz immer konstant bleibt.
__________________
--
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 27.11.2008, 15:06  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 4
giga befindet sich auf einem aufstrebenden Ast
Standard

Danke einmal für die schnellen Antworten!

@nikosch:
Das was zwischen den <link> und </link> steht soll ja bleiben und das tut es auch. Aber im String steht zb. <link 123#456>...Text...</link> und solche <link>'s können in einem String öfters vorkommen(werden aus einer DB ausgelesen).
Darum die Schleife und das $c[$i]
Im Endeffekt soll im HTML nur noch:

Code:
<a href="http://meineSeite.at/id=123">...text...</a>
stehen und nicht:

Code:
<a href="http://meineSeite.at/id=123"><link 123#456>...text...</link></a>
Die id hole ich mir aus dem was im <link 123#456> steht, was ja auch schon funzt, nur der HTML Code ist nicht wirklich sauber.

lg

Christopher

PS: Stehe halt noch am Anfang meiner php-Reise
giga ist offline  
Alt 27.11.2008, 15:24  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Zitat:
Das was zwischen den <link> und </link> steht soll ja bleiben und das tut es auch. Aber im String steht zb. <link 123#456>...Text...</link> und solche <link>'s können in einem String öfters vorkommen(werden aus einer DB ausgelesen).
Diese Info hast Du uns aber verschwiegen und das Format ist sehr wichtig bei regulären Ausdrücken. Dehalb stimmt auch md5's Variante nicht.
Damit sollte sich die gesamte Funktion in etwas hierauf beschränken lassen (Linktext mußte bei Bedarf anpassen):
PHP-Code:
function linksearch($text)
  {           
  return (
preg_replace('#<link\s*([^\s]*)>(.*?)</link>#i' '<a href="http://meineSeite.at/$1">$2</a>' ,  $text));
  } 
__________________
--
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 27.11.2008, 16:41  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 4
giga befindet sich auf einem aufstrebenden Ast
Standard

Danke Nikosch,

damit komme ich schon weiter. Aber eine Frage noch $1 und $2 beziehen sich die auf die Ausdrücke in der runden Klammer ([^\s]*)und (.*?) ??


Habe ich noch nie gesehen, aber kein Wunder bin ja auch noch sehr grün hinter den Ohren.

lg

Christopher

giga ist offline  
Alt 27.11.2008, 16:42  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Ganz genau.
$0 ist der gesamte Ausdruck
$1 die erste Klammer usw.
__________________
--
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 28.11.2008, 09:23  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 4
giga befindet sich auf einem aufstrebenden Ast
Standard

Danke Nikosch!

Durch deinen Ansatz läuft das Ding jetzt und ich habe das mit den regulären Ausdrücken endlich verstanden.

lg

Christopher
giga 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] Datum zwischen zwei Daten? zwerg Datenbanken 5 21.10.2008 19:54
ohne db Daten zwischen Benutzern austauschen... tonak PHP Tipps 2008 2 22.02.2008 12:07
zeit zwischen 2 datetime jens76 Datenbanken 13 08.06.2006 14:15
[Erledigt] Abstände zwischen Tabellen HTML, Usability und Barrierefreiheit 1 11.10.2005 14:55
Text zwischen zwei zechen löschen PHP Tipps 2005-2 2 08.07.2005 19:21
[Erledigt] Kommunikation zwischen Objekten - Wie geht es richtig? PHP Tipps 2005 9 11.04.2005 00:57
abstrakte unterschiede zwischen ie und opera HTML, Usability und Barrierefreiheit 8 12.03.2005 19:54
Teilstring mit ganzen Wörtern zcmaster Datenbanken 0 02.02.2005 08:00
Markierte Einträge zwischen zwei Textareas austauschen HTML, Usability und Barrierefreiheit 2 02.11.2004 11:51
Textblöcke austauschen PHP Tipps 2004 10 16.10.2004 18:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php teilstring löschen, php teilstring entfernen, php alles zwischen ersetzen, http://www.php.de/php-tipps-2008/49371-erledigt-teilstring-zwischen-zwei-markeren-austauschen.html, teilstring löschen php, teilstring entfernen php, php text austauschen zwischen zwei wörtern, php string zwischen zwei teilstrings, php strings zwischen 2 klammern ersetzten, php string teilstring löschen, php string zwischen ersetzen, c teilstring ersetzen, \alles zwischen ersetzen\ php, teilstring ersetzen c, php teilstring ersetzen, php stringteile tauschen, teilstring löschen, string php zwischen klammer ersetzen, substring aus string filtern php, c substring aus string löschen

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