Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

php: preg_match hängt

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
OnkelHotte
PostRank 6
PostRank 6
Beiträge: 439
Registriert: 29.06.2005, 07:05

Beitrag von OnkelHotte » 17.04.2008, 04:28

Ziel der Übung ist es, aus einem String, der eine HTML-Tabelle enthalten kann alle formatierungen mit <p> und </p> zu entfernen.

Leider hängt das Script irgendwo, nur komme ich da nicht so richtig weiter; ist ja auch schon spät und dem Morgen graut bereits.

Code: Alles auswählen

$NeuerString='<p>blah blub irgendwas</p><table id="lala"><tr><td>ich bin<p>eine neue Zeile</p></td></tr><tr><td>ich bin<p>eine noch ne Zeile</p></td></tr></table><p>Hier geht es weiter, was auch in Ordnung geht</p>';

while &#40;preg_match&#40;'#<table id="lala"&#40;.*?&#41;</table>#s', $NeuerString, $match&#41;&#41; &#123;
	foreach &#40;$match as $v&#41; &#123;
		$vv.=str_replace&#40;"<p>","",str_replace&#40;"</p>","",$v&#41;&#41;;
	&#125;
	$NeuerString = $gefunden&#91;1&#93;.$vv.$gefunden&#91;3&#93;; 
&#125;
Jemand eine Idee?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 17.04.2008, 07:13

Wozu die Schleife mit while?

echo preg_replace('~<p>|</p>~i', '', $NeuerString);

OnkelHotte
PostRank 6
PostRank 6
Beiträge: 439
Registriert: 29.06.2005, 07:05

Beitrag von OnkelHotte » 17.04.2008, 09:30

while deshalb, weil es mehre table sein können.

OnkelHotte
PostRank 6
PostRank 6
Beiträge: 439
Registriert: 29.06.2005, 07:05

Beitrag von OnkelHotte » 17.04.2008, 09:54

@CIX88: Dein replace ersetzt mir die <P>s im kompletten string. Ich braus aber nur in der tabelle :(

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 17.04.2008, 11:59

OnkelHotte, theoretisch könntest du das auch alles in einem preg_replace-Ausdruck machen, aber dann wird es doch recht wirr. Dein str_replace hingegen bleibt schön übersichtlich (evtl noch in 2 Zeilen aufteilen das ganze...). Schau dir aber mal preg_match_all() an, das ist eleganter als die while-Schleife mit preg_match() - und dafür gemacht :)

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 17.04.2008, 18:09

@OnkelHotte
Achso sorry, dann hatte ich das falsch verstanden, dachte generell alle <p>-Tags ...

kev299
PostRank 2
PostRank 2
Beiträge: 52
Registriert: 13.05.2008, 08:18

Beitrag von kev299 » 20.05.2008, 07:25

also wenn du alle vorkommen mit <p></p> filtern willst wäre das die richtige variante. Du musst preg_match_all greedy machen.

$treffer=preg_match_all(/(<p>).*?(</p>)/si,$string,$neuerstring)

foreach($neuerstring[0] as $neu){

echo $neu."<br>";

}

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 21.05.2008, 06:34

Naja die Variable $treffer macht jetzt aber keinen Sinn :)
Es reicht:
preg_match_all(/(<p>).*?(<\/p>)/si, $string, $neuerstring);

Und man sollte darauf achten, dass Delimiter nicht im Suchpattern mit enthalten sind, und falls doch dann ein \ davor setzen.

kev299
PostRank 2
PostRank 2
Beiträge: 52
Registriert: 13.05.2008, 08:18

Beitrag von kev299 » 21.05.2008, 07:16

CIX88 hat geschrieben:Naja die Variable $treffer macht jetzt aber keinen Sinn :)
Es reicht:
preg_match_all(/(<p>).*?(<\/p>)/si, $string, $neuerstring);

Und man sollte darauf achten, dass Delimiter nicht im Suchpattern mit enthalten sind, und falls doch dann ein \ davor setzen.
richtig, hab vergessen zu maskieren.

Anonymous

Beitrag von Anonymous » 21.05.2008, 15:00

wo nimmst du denn $gefunden her? :wink:

kev299
PostRank 2
PostRank 2
Beiträge: 52
Registriert: 13.05.2008, 08:18

Beitrag von kev299 » 22.05.2008, 07:27

net(t)worker hat geschrieben:wo nimmst du denn $gefunden her? :wink:
was meinst du mit mit der variable $gefunden

Anonymous

Beitrag von Anonymous » 22.05.2008, 15:59

OnkelHotte hat geschrieben:...
...
$NeuerString = $gefunden[1].$vv.$gefunden[3];
...
...
die da...

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag