preg_match für Fortgeschrittende
Simone
- php
HI
Da bin ich mal wieder !
Hier wird man(Frau) geholfen.
preg_match("=$suchw</b><br>(.*)\ |</font>|.*$=siU", $str, $keyww);
Irgendwie packe ich das nicht!
Zum Problem ich versuche HTML Text datenbankfähig zu machen
$suchw</b><br> ist da und konstant immer gleich (erste Regel ) und es müssen als Musteralternativen für das Ende verschiedene Möglichkeiten offen sein entweder \ |</font>|. was ist an den Code falsch
Danke Simone
Hallo Simone,
preg_match("=$suchw</b><br>(.*)\ |</font>|.*$=siU", $str, $keyww);
Irgendwie packe ich das nicht!
siehe hier:
http://laurent.riesterer.free.fr/regexp/
;-)
damit kann man das wunderbar lernen und so ungeheuer nützlich, wie reguläre ausdrücke sind, ist es den aufwand auch wert, finde ich. viel spass! :-)
freundl. grüsse aus berlin, Raik
HI Raik
Super Teil leider nicht Windows lauffähig!!
Simone
Hallo Simone,
Super Teil leider nicht Windows lauffähig!!
und ob!
http://fakeraol.homeip.net/4_simone/VisualRegexp.rar
bitteschön! ready to use
bis morgen abend verfügbar ...
freundl. grüsse aus berlin, Raik
Hallo Simone,
weis nicht, ob du es mitbekommen hast. deshalb hier nochmal:
http://fakeraol.homeip.net/4_simone/VisualRegexp.rar
bitteschön! ready to use
bis morgen abend verfügbar ...
freundl. grüsse aus berlin, Raik
Hallo Raik Ich nutze was ähnliches "The Regex Coach" wenn ich mein
Problem gelöst hätte würde ich nicht hier nachfragen. D.H. was
nutzt das beste Programm wenn man(ich) nicht damit umgehen kann. Diese
verdammte Unwissenheit...... man lernt dazu und Frau auch.. Danke
werde es mir mal ansehen.
Simone
Hello,
preg_match("=$suchw</b><br>(.*)\ |</font>|.*$=siU", $str, $keyww);
Irgendwie packe ich das nicht!
Zum Problem ich versuche HTML Text datenbankfähig zu machen
$suchw</b><br> ist da und konstant immer gleich (erste Regel ) und es müssen als Musteralternativen für das Ende verschiedene Möglichkeiten offen sein entweder \ |</font>|.
Hast Du mal an die Whitespaces gedacht? Es können ja Zeilumbrüche, Tabs, Leerzeichen etc im gesuchten Text stecken.
Grüße
Tom
HI Tom
$a = preg_replace("=\r\n=", "", $a);
selbst wenn ich diese Umbrüche rausfilter geht es nicht..
Naja, der Code läuft zu cirka 75% aber das sind immer noch 25% Handarbeit.
es muss doch möglich sein Muster variabel am Ende zu gestalten
so das ich die ganze Breite erfassen kann.
Simone
Hello,
$a = preg_replace("=\r\n=", "", $a);
selbst wenn ich diese Umbrüche rausfilter geht es nicht..
Es gibt auch noch \t,\n,\r, das Leerzeichen, etc.
Mein Tipp: Bau Dir einen garantiert einzeiligen Teststring, inn dem das Gesuchte drinsteht. Und dann experimentier solange, bis es klappt. Danach kannst Du dann mal versuchen, Leerzeichen, Tabs, Newlines, Zeilerückläufe etc einzubauen.
Diese kleinen Hässlichkeiten können auch in beliebiger Reihenfolge und mehrfach vorhanden sein. Man sieht sie ja in "normalen" Editoren leider nicht.
Grüße
Tom
Hello Tom
Ich arbeite mit "Ulli V" hab aber auch noch Ultraedit ist dafür besser geignet jedoch hab ich mich an den Syntax von ulli gewöhnt und dieser ist einfach Super.
So richtig bin ich immer noch nicht weiter gekommen
ich poste einfach mal mein Code:
Verzeichniss einlesen Schleife..........
$str = join("", file("$dir$file"));
.......................
if (preg_match("=([\d]{2}.+[\d]{2}.+[\d]{2}.+[\d]{4}[-\d]{5})=", $title[1], $nr)); // das ist eine Nummer die immer wieder kehrt
{
if (!empty($nr[1]))
{Echo "$nr[1] $title[1]<br>"; // diese nummer ist im titel
echo "<a href='$dir$file'>datei</A>";
echo "<a name="#$datei"></a><br>";
if (preg_match_all('=<b>(.*)</b><br>=siU', $str, $keyww2))
While(List(,$suchw) = Each($keyww2[1]))
{
$suchw = preg_replace("=(<[^>]+>)=siU", "", $suchw);
echo "<b>$suchw</b><br><br>";
preg_match("=$suchw</b><br>(.*)\ |</font>|.*$=siU", $str, $keyww);// und hier ist das Problem
$a =$keyww[1];
$a = preg_replace("=<?.*??>=s", "", $a);
$a = preg_replace("=\ =", " ", $a);
$a = preg_replace("=(<[^>]+>)=siU", "", $a);
$a = preg_replace("=\r\n=", "", $a);
$a = preg_replace("=\s+=", " ", $a);
echo "<u>$a</u><br> ";
}
echo "<hr> ";
}
Hello Tom
Ich arbeite mit "Ulli V" hab aber auch noch Ultraedit ist dafür besser geignet jedoch hab ich mich an den Syntax von ulli gewöhnt und dieser ist einfach Super.So richtig bin ich immer noch nicht weiter gekommen
ich poste einfach mal mein Code:
Verzeichniss einlesen Schleife..........
$str = join("", file("$dir$file"));
Bist Du sicher, dass in $str etwas drinsteht?
echo "<pre>";
echo $str;
echo "</pre>";
Gib doch noch mal ein paar Musterbeispiele vor.
Grüße
Tom
HI Tom
preg_match("=$suchw</b><br>(.*)\ =siU", $str, $keyww);
^^^ hier müssen alternativen rein
::::::::::::::HTML:::::::::::::::::.
<b>schlüsselwort eins</b><br>
<ul>
<li> texxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt</li>
</ul>
<b>schlüsselwort zwei</b><br>
texxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt .<br>
<br>
</font>
</TD>
</TR>
</TABLE>
</body>
</html>
:::::::::::::::::::::::::::::::::::::
das kann mein Suchmuster
----------------------------------------------------
neue Datei *.html
<b>schlüsselwort eins</b><br>
textttttttttttttttttttttttttttttttt.<br>
<br>
<b>Indikationen</b><br>
<ul>
<li> Texxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt.</li>
</ul>
<b>schlüsselwort zwei</b><br>
texxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt<br>
</font>
</TD>
</TR>
</TABLE>
</body>
</html>
und hier scheitert der platter
Schlüsselwörter werden erkannt jedoch fehlt der Inhalt
if (preg_match_all('=<b>(.*)</b><br>=siU', $str, $keyww2))
While(List(,$suchw) = Each($keyww2[1])) // $keyww2[1] ist das Schlüsselwort
{
echo "<b>$suchw</b><br><br>";
preg_match("=$suchw</b><br>(.*)\ =siU", $str, $keyww);
echo "keyww[1]<br> "; //sollte der Text sein der zum Schlüsselwort gehört
}
Simone
Hey,
"Alternativen" gehören auch in Klammern, ansonsten bekommst du drei
verschiedene reguläre Ausdrücke in einem (von denen die letzen zwei
effektiv nach Nichts suchen).
Und abhängig von deinem Text, kannst du dir evtl. auch das $ am Ende
schenken. Backslashe waren hier auch größtenteils unnötig:
preg_match("=$suchw</b><br>(.*)( |</font>|.)=siU", $str, $keyww);
Statt (.*) könntest du evtl. auch (.*?) oder (.+?) gebrauchen(?)
MsF,
milky