PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : text aus einem String anhand von Schlüsselwörter löschen


tsunamitsunami
28.08.2009, 11:51:51
Hallo,

ich habe folgendes vor:

<?php
$vorher = "Ein kleiner brauner Fuchs springt über den dummen braunen Baum und frisst den Hasen.
schluesselwort1 tsunamitsunami möchte unbedingt Porsche fahren. schluesselwort2<br><br>
Und noch ein kleiner brauner Fuchs springt über den dummen braunen Baum und frisst den Igel.<br>schluesselwort1 tsunamitsunami möchte unbedingt Audi fahren. schluesselwort2<br>
Ein kleiner brauner Fuchs springt über den dummen braunen Baum und frisst den Hirsch. schluesselwort1 tsunamitsunami möchte unbedingt Ferrari fahren. schluesselwort2<br><br>";
$nachher = ???
?>

Ich möchte aus Quellcode einen Teil rausschmeissen (javascript, title usw.) um diesen mit dompdf verwenden zu können.

Dazu schreibe ich ob_tart die Ausgabe in eine Variable.

Natürlich kann ich 2x ein Explode und implode drüberlaufenlassen oder mit string operationen hantieren.
Also:
$temp1 = expplode($vorher,"schluesselwort1);
$temp2 = implode($temp1," ");
$temp2 = explode($temp1,"schlusselwort2");
$ausgabe = implode($temp2," ");



Oder:
suche nach Schlüsselwort 1, Suche nach Schlüsslwort2 substr(position_schluesselwort1,position_schluesselwort2,$vorher)...

Aber einfacher gehts nicht, oder? preg_split und preg_match macht nicht das was ich möchte? Damit finde ich zwar alle Zahlen und alle Buchstaben A und B...
Und mit preg_replace suche ich doch nach typen, oder? Also alle Zahlen, Nummer, Zeichenkombinationen, also peterpan@...

tsunamitsunami
28.08.2009, 12:29:39
Gelöst!
Doch preg_replace:


$nachher = preg_replace("=schluesselwort1(.+)schluesselwort2=Ui","","$vorher");


Habs bei php.netgefunden!

Aber hat irgendwer eine Ahnung, was da passiert? Es geht um den Suchstring. Der rest ist klar.
Schlüsselwert1 und Schlüsselwert2 sind die begrenzer.
.+ ?
Ui ?

tsunamitsunami
28.08.2009, 19:12:55
Ok OK Kommando zurück.

Für diesen einfachen Fall habe ich es gelöst, ja.

Nun habe ich aber einen längeren Quellcode (300 Zeilen) und möchte diesen bereinigen.

Im Quelltext steht halt ein Javascript für einen title.
Für start und endpunkt habe ich einfach im php code jeweils einen html-Kommentar eingefügt.
Die Namen sind erfunden, also Schall und Rauch.

<tr>
<td class="datenzelle"><center>5</center></td>
<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Immbolie </legend>Bebaute Fl&auml;che: 285 m²<br>unbebaute Fl&auml;
che:
12000 m²<br>Baujahr: 1988<br>Lindgren Platz 9<br>79101 Stuttgart<br><br><hr>Eigent&uuml;mer: <br>Herr<br> Sebastian Meier<br>Lindgren
Platz
9<br>79101 Stuttgart<br>Kommmentar: Schwanger<br><br></fieldset>">
<endetooltipp>Wohnung in der Winkelgasse </td>
<td class="datenzelleeuro"> 10.002 &euro;</td>

<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Versicherungsnehmer</legend><br>Herr<br> Paul Müller<br>Vitusstraße 2<
br>73260 Frankfurt a.M.<br><br><hr><br> Geboren am: 12.03.1983 <br>Keine Schwerbehinderung. <br><br><hr><br>Telefon: +49 118399658<br>
Email: mueller@aol.com<br><br></fieldset>">
<endetooltipp>
Müller, Paul</td>
<td class="datenzelle">05.12.1985</td>
<td class="datenzelle">05.10.2010</td>

<td class="datenzelleeuro">195,00 &euro;
<anfangtooltipp>
<img src="images/info.gif" class="Tips5" title="::<fieldset><legend>Beitr&auml;ge</legend><br>Beitrag: 195 &euro;<br>Zahlungsintervall:
jährlich<br>Zahlungsweise: bar<br><br></fieldset>">
<endetooltipp>
</td><td class="datenzelle"><a href="vertrag_generieren.php?vid=5&base_path=
www&niederlassungs_id=1" target="new">
<anfangtooltipp>
<img src="images/vertraege.gif" border="0" class="Tips6" title="::Vertrag generieren"></a>
<endetooltipp></td></tr><tr><td class="datenzelle"><center>67</center></td>

<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Immbolie </legend>Bebaute Fl&auml;che: 64 m²<br>unbebaute
Fl&auml;che: 1571 m²<br>Baujahr: 1876<br>Poststraße 677<br>77252 Münster<br><br><hr>Eigent&uuml;mer: <br>Frau<br>Dr. Dr. Gudrun Beckmann<br>
Poststraße 677<br>77252 Münster<br><br></fieldset>"><endetooltipp>Hauptgebäude von Feuer & Flamme </td>
<td class="datenzelleeuro"> 10.033 &euro;</td>
<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Versicherungsnehmer</legend><br>Frau<br> Margreth Anton<br>
Borchertstraße 66<br>94067 München<br><br><hr><br>
Geboren am: 03.09.1920 <br>Keine Schwerbehinderung. <br><br><hr><br>Telefon: +49 118399675<br>Email: margreth.anton@anton.de<br><br></
fieldset>">
<endetooltipp>
Anton, Margreth</td>
<td class="datenzelle">05.02.1986</td>
<td class="datenzelle">06.12.2010</td>
<td class="datenzelleeuro">193,00 &euro;
<anfangtooltipp>
<img src="images/info.gif" class="Tips5" title="::<fieldset><legend>Beitr&auml;ge</legend><br>Beitrag: 193 &euro;<br>Zahlungsintervall:
halbjährlich<br>Zahlungsweise:
einzugsermaechtigung<br><br></fieldset>">
<endetooltipp>
</td><td class="datenzelle"><a href="vertrag_generieren.php?vid=67&base_path=www&
niederlassungs_id=1" target="new">
<anfangtooltipp>
<img src="images/vertraege.gif" border="0" class="Tips6" title="::Vertrag generieren"></a>
<endetooltipp>
</td></tr><tr><td class="datenzelle"><center>15</center></td>
<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Immbolie </legend>Bebaute Fl&auml;che: 64356 m²<br>unbebaute
Fl&auml;che: 3452 m²<br>Baujahr: 1827<br>Warendorfer Straße 23<br>9136 Berlin<br><br><hr>Eigent&uuml;mer: <br>Herr<br> Franz-Josef Peters<
br>Warendorfer Straße 23<br>9136 Berlin<br><br></fieldset>">
<endetooltipp>
Wohnung in der Winkelgasse </td>
<td class="datenzelleeuro"> 10.007 &euro;</td>
<td class="datenzelle">
<anfangtooltipp>
<img src="images/info.gif" class="Tips4" title="::<fieldset><legend>Versicherungsnehmer</legend><br>Frau<br> Petra Schmidts<br>Münzstraße
5<br>29071 Frankfurt a.M.<br><br><hr><br> Geboren am: 05.04.1991 <br>Keine Schwerbehinderung. <br><br><hr><br>Telefon: +49 118399661<br>
Email: hasenfuss@web.de<br><br></fieldset>">
<endetooltipp>
Schmidts, Petra</td>
<td class="datenzelle">15.12.1985</td>
<td class="datenzelle">15.10.2010</td>
<td class="datenzelleeuro">187,00 &euro;
<anfangtooltipp>
<img src="images/info.gif" class="Tips5"
title="::<fieldset><legend>Beitr&auml;ge</legend><br>Beitrag: 187 &euro;<br>Zahlungsintervall: vierteljährlich<br>Zahlungsweise:
einzugsermaechtigung<br><br></fieldset>"><endetooltipp></td><td class="datenzelle"><a href="vertrag_generieren.php?vid=15&base_path=www&
niederlassungs_id=1" target="new"><anfangtooltipp><img src="images/vertraege.gif" border="0" class="Tips6" title="::Vertrag generieren"></
a>
<endetooltipp>
</td>
</tr>


Das ganze als Variable $vorher gespeichert. Und nun:


$nachher = preg_replace("=<!--anfangtooltipp-->(.+)<!--endetooltipp-->=Ui","pp",$vorher);
echo"<br><hr><br>Nachher: ".$nachher;
bereinigt und ausgegeben. Das pp ist nur dazu da, dass ich nicht jedes mal in den Quelltext reinschauen muss.
Hatte vermutet das uU das < und > Steuerzeicheh sind und <!--anfangtooltipp--> durch xxxx ersetzt und <!--endetooltipp--> durch aaaa.

Passieren tut nichts! Gut außer dass statt der Kommentare da die Buchstaben drinne stehen.
Aber das preg_replace wird ignoriert!

tsunamitsunami
31.08.2009, 14:02:30
Ok, nun habe ich zwecks Fehlereingrenzung alle Zeichen außer Buchstaben durch Text ersetzt. Das kann man hinterher ja wieder rückgängig machen.


<?php
$vorher = "Ein kleiner brauner Fuchs springt über den dummen braunen Baum und frisst den Hasen.
!!kommentaranfang!! <table border='1'><tr><td>1</td><td>2</td><td><img src='images/info.gif' title='ollie will unbedingt tanzen'></td></tr>
<tr><td>4</td><td><img src='images/info.gif' title='ollie will unbedingt tanzen'></td><td>6</td></tr>
<tr><td>7</td><td>8</td><td>9</td></tr></table>!!kommentarende!!";
$nachher_temp = str_replace("=","xyz",$vorher);
$nachher_temp = str_replace("/","abc",$nachher_temp);
$nachher_temp = str_replace("'","zzz",$nachher_temp);
$nachher_temp = str_replace("<","kleiner",$nachher_temp);
$nachher_temp = str_replace(">","groesser",$nachher_temp);
$nachher_temp = str_replace(".","punkt",$nachher_temp);
//$nachher = preg_replace("=<img src\=\"bilder/ficken.jpg\" alt\=\"ficken\">(.+)schluesselwort2=Ui","",$vorher);
$nachher_tmp = preg_replace("=!!kommentaranfang!!(.+)!!kommentarende!!=Ui","",$nachher_temp);

echo "Vorher".$vorher;
echo "<br><hr><br>Zwischenstand".$nachher_temp;
echo "<br><hr><br>Nachher".$nachher_tmp;
?>


Ich möchte einfach im ersten Schritt die Tabelle rauswerfen. Später dann etwas genauer alle img-tags in der Tabelle.
Aber das gibts doch gar nicht. Alle preg_replace wird ignoriert. Keiner eine Idee?

Ist doch eigentlich das gleiche wie im Ursprungsbeispiel. Alles zwischen schluesselwort1 und schluesselwortzwei wird ersetzt.
< und > mag preg-replace nicht. Verstehe ich allerdings auch nicht, da es in "" steht, also ein string zeichen ist, kein Operant.