| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

31-03-2010, 11:52
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
regex ausdruck
hallo habe ein problem mit einem regex ausdruck, der als pattern in einer preg_match abfrage verwendet werden soll. ich dabei nach folgendem suchen: alles, was innerhalb
PHP-Code:
<table class="blabla">
und steht soll dabei gefiltert werden. mehrfachübereinstimmungen sind ja kein problem. ich habe wirklich keine ahnung, wie ich das hinbekomme. kann mir jemand helfen?? danke
|

31-03-2010, 12:01
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
mit regulären Ausdrücken geht das nur, wenn innerhalb der Tabelle keine verschachtelte Tabelle mehr enthalten ist. Besser wäre es, das per DOM zu machen, wenn du mich fragst.
PHP-Code:
"!<table\\s+class=\"blabla\"\\s*>(.+?)</table\\s*>!s"
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

31-03-2010, 12:56
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
nein, keine verschachtelten tabellen mehr, nur ganz normale trs und tds.
danke für die regex, ich schau mir das jetzt mal ganz genau an
du würdest das mit dom machen? wie genau meinst du das?
super, danke für die schnelle hilfe!!
//EDIT:
hab das gerade mal getestet, bekomme aber leider kein ergebnis
(tut mir leid, kann sein, dass ich einen dummen fehler mache)
PHP-Code:
$muster = "!<table\\s+class=\"test\"\\s*>(.+?)</table\\s*>!s"; preg_match($muster, $string, $treffer);
//$string enthält validen html code //die zeichenkette <table class="test">....</table> ist 100% enthalten //leider ist $treffer leer
Geändert von svr (31-03-2010 um 13:16 Uhr)
|

31-03-2010, 13:20
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Poste mal bitte den Inhalt von $string auszugsweise, so dass man es nachvollziehen kann.
http://php.net/manual/de/book.dom.php
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (31-03-2010 um 13:24 Uhr)
|

31-03-2010, 13:31
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
wollte das nicht posten, da es eben sehr lange ist, aber entschuldige, du hast recht. ohne kann man das schlecht nachvollziehen.
nopaste.info - free nopaste script and service
(die class um die es geht ist in großbuchstaben geschrieben!)
hier kann man es sich ansehen. hab das ganze überarbeitet, da zwischen den einzelnen elementen unendlich viel stand, weshalb es sehr unübersichtlich wäre
ist leider trotzdem nicht sehr viel besser, entschuldige das
danke!
Geändert von svr (31-03-2010 um 13:33 Uhr)
|

31-03-2010, 13:33
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
TEST ist dort groß geschrieben. Häng mal einfach ein "i" ganz hinten an den Ausdruck dran: "...!si"
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

31-03-2010, 13:41
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
habe test nur der erkennbarkeit wegen gross geschrieben
in wirklichkeit steht dort absatzKlein genau in dieser schreibung. und genau so habe ich es auch in das muster eingefügt.
durch den i modifikator wird ja nur die unterscheidung zwischen groß und kleinschreibung deaktiviert.
|

31-03-2010, 13:50
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Steht es dort auch in "..." oder zufällig in '...'? Ich sehe nämlich bisher keinen Grund, warum das nicht funktionieren sollte. Bitte sorge für 100%ige Nachvollziehbarkeit, indem du den echten HTML-Code (auszugsweise) und das aktuelle Suchmuster zur Verfügung stellst. Dieser Testcode von mir funktioniert jedenfalls tadellos:
PHP-Code:
<?php
$string = <<<'EOD'
<div>
<div>
...
<div class="clear"></div>
</div>
</div>
<div class="mainCont">
<h2 class="first "> basis </h2>
<table class="absatzKlein">
<tr><td class="defType">last</td><td> <p>nummer</p> </td></tr>
<tr><td class="defType">since</td><td> nummer </td></tr>
<tr><td class="defType">ich</td> <td><p>mann</p></td> </tr>
<tr>
<td class="defType">blaa</td>
<td> <p><a href="url">zahl</a>/<a href="url">bla</a> </td>
</tr>
<tr> <td class="defType">ich</td> <td> <p> bla </p> </td> </tr>
<tr> <td class="defType">ich</td> <td> <p> - </p> </td> </tr>
<tr> <td class="defType">bla:</td> <td><p>bla</p></td> </tr>
<tr> <td class="defType">ich</td> <td><p>bla</p></td> </tr>
</table>
<div id="rectangle" style="display:none;">
<div class="rectangle" id="BANNER_rectangle"></div>
</div>
<div class="clear"></div>
<h2 class="mainHeader "> header</h2>
<table class="absatzKlein">
<tr>...</tr>
</table>
</div>
EOD;
$muster = "!<table\\s+class=\"absatzKlein\"\\s*>(.+?)</table\\s*>!si";
preg_match($muster, $string, $treffer);
// preg_match_all($muster, $string, $treffer);
print_r($treffer);
?>
Edit: wenn du als Muster
PHP-Code:
"!<table\\s+class=([\"'])absatzKlein\\1\\s*>(.+?)</table\\s*>!s"
verwendest, ist es sogar egal, welches Anführungszeichen verwendet wird.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (31-03-2010 um 13:56 Uhr)
|

31-03-2010, 14:00
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
ich bauarbeiter. damit, die daten als html für mich sichtbar sind, habe ich string mit htmlentities behandelt. daran hat es wohl gelegen, jetzt geht alles.
entschuldige mich!
nochmals danke für die kompetente hilfe, werde das forum auf jeden fall weiter besuchen
|

31-03-2010, 14:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von svr
werde das forum auf jeden fall weiter besuchen 
|
Sehr gerne, ich muss an dieser Stelle mal lobend erwähnen, dass du im Gegensatz zu vielen anderen Neulingen hier die Forenregeln gelesen und verstanden zu haben scheinst.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|