Thema: Mehrzeiliges Regex
-
20.03.2011, 18:24 #1
- Registriert seit
- 27.06.2012
- Beiträge
- 17
Thanked 0 Times in 0 PostsMehrzeiliges Regex
Hi,
ich benutze derzeit den Code
PHP-Code:preg_match_all('#<TR>(s*)<TD WIDTH=33% ALIGN=LEFT>(s*)<FONT FACE="Times New Roman,Garamond" SIZE=2><b>^(s*)[A-Za-z0-9 @+-]+$</b>(s*)</FONT></TD>(s*)<TD WIDTH=33% ALIGN=CENTER> </TD>(s*)<TD WIDTH=33% ALIGN=RIGHT> </TD>(s*)</TR>#Uis', $web, $found)
HTML-Code:<TR> <TD WIDTH=33% ALIGN=LEFT> <FONT FACE="Times New Roman,Garamond" SIZE=2><b> Frank White - Unsere Zeit</b> </FONT></TD> <TD WIDTH=33% ALIGN=CENTER> </TD> <TD WIDTH=33% ALIGN=RIGHT> </TD> </TR>
-
20.03.2011, 18:30 #2
- Registriert seit
- 27.06.2012
- Beiträge
- 17
Thanked 0 Times in 0 PostsMehrzeiliges Regex
Die Variable $web wird von einem file_get_contents() ermittelt. Ich kann also nichts für das großgeschriebene.
Und " benutze ich nicht, weil ich keine Lust habe die Anführungszeichen zu replacen.
Sinnvolle Beiträge?
-
20.03.2011, 18:34 #3
Mehrzeiliges Regex
Hi,
jo ist klar das du nen False kriegst.
Du musst am Anfang jeder RegEx immer mit "/ Anfangen und mit / schließen. Quasi: "/CONTEN(.*?)/" .
Desweiteren musst du jeden Schrägstrich vom HTML escapen "gegenübertreteten".
</TR> wird daher zu <\/TR>
das sollte dann in etwa so aussehen:
PHP-Code:eg_match_all('/#<TR>(s*)<TD WIDTH=33% ALIGN=LEFT>(s*)<FONT FACE="Times New Roman,Garamond" SIZE=2><b>^(s*)[A-Za-z0-9 @+-]+$</b>(s*)<\/FONT><\/TD>(s*)<TD WIDTH=33% ALIGN=CENTER> <\/TD>(s*)<TD WIDTH=33% ALIGN=RIGHT> <\/TD>(s*)<\/TR>#Uis/', $web, $found)
Hier auch nochmal nen bisschen zum nachlesen: Quakenet/#php Tutorial - de - Reguläre Ausdrücke oder http://www.schattenbaum.net/php/ereg.php
-
20.03.2011, 18:37 #4
- Registriert seit
- 27.06.2012
- Beiträge
- 17
Thanked 0 Times in 0 PostsMehrzeiliges Regex
Weder
PHP-Code:preg_match_all('/<TR>(s*)<TD WIDTH=33% ALIGN=LEFT>(s*)<FONT FACE="Times New Roman,Garamond" SIZE=2><b>^(s*)[A-Za-z0-9 @+-]+$<\/b>(s*)<\/FONT><\/TD>(s*)<TD WIDTH=33% ALIGN=CENTER> <\/TD>(s*)<TD WIDTH=33% ALIGN=RIGHT> <\/TD>(s*)<\/TR>/', $web, $found)
PHP-Code:preg_match_all('/<TR>(s*)<TD WIDTH=33% ALIGN=LEFT>(s*)<FONT FACE="Times New Roman,Garamond" SIZE=2><b>^(s*)[A-Za-z0-9 @+-]+$<\/b>(s*)<\/FONT><\/TD>(s*)<TD WIDTH=33% ALIGN=CENTER> <\/TD>(s*)<TD WIDTH=33% ALIGN=RIGHT> <\/TD>(s*)<\/TR>/Uis', $web, $found)
-
20.03.2011, 18:39 #5
Mehrzeiliges Regex
Ersetze dein komisches (s*) mal durch (.*?). Wenns nicht klappt, würde ich dir empfehlen, jedes Element einzeln rauszupicken. Sogut kenn ich mich mit RegEx leider auch nicht aus :-/
-
20.03.2011, 18:46 #6
- Registriert seit
- 27.06.2012
- Beiträge
- 17
Thanked 0 Times in 0 PostsMehrzeiliges Regex
Wird auch zu FALSE.
Gesucht wird ja 'Frank White - Unsere Zeit'
Dieser enthält
- Große Buchstaben
- Kleine Buchstaben
- Leerzeichen
- Bindestrich
Also müsste der Regex dafür sein, um das zu finden so sein
^[A-Za-z -]$
right?
Wenn ich es (.*) suchen lasse, kommt auch ein FALSE (auch wenn ich die (.*?) wieder zu (s*) ersetze)
"Uis" am Ende führt auch zu FALSE bei (.*?) und (s*)
-
20.03.2011, 18:55 #7
Mehrzeiliges Regex
Comu, es ist egal, ob man # oder / benutzt. Über mehrere Zeilen, dass geht mit \s+. Das steht für Whitespace (Leerraum).
Grüße
-
20.03.2011, 18:56 #8
- Registriert seit
- 27.06.2012
- Beiträge
- 17
Thanked 0 Times in 0 PostsMehrzeiliges Regex
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '+' in
PHP-Code:preg_match_all('/<TR>(s*)<TD WIDTH=33% ALIGN=LEFT>(s*)<FONT FACE="Times New Roman,Garamond" SIZE=2><b>(.*)<\/b>(s*)<\/FONT><\/TD>(s*)<TD WIDTH=33% ALIGN=CENTER> <\/TD>(s*)<TD WIDTH=33% ALIGN=RIGHT> <\/TD>(s*)<\/TR>/s+', $web, $found)
-
20.03.2011, 19:04 #9
Mehrzeiliges Regex
PHP-Code:<?php
/**
* @author Diebspiel
* @copyright 2011
*/
(string)$test = file_get_contents("http://k-script.cc/");
preg_match("#Themen: (.*),\s+Beiträge: (.*),\s+Benutzer: (.*)#", $test, $array);
print $array[1] . "<br>";
print $array[2] . "<br>";
print $array[3];
?>
-
20.03.2011, 19:08 #10
Mehrzeiliges Regex
PHP-Code:
preg_match('/<TR><TD WIDTH=33% ALIGN=LEFT><FONT FACE="Times New Roman,Garamond" SIZE=2><b>(.*?)<\/b><\/FONT><\/TD><TD WIDTH=33% ALIGN=CENTER> <\/TD><TD WIDTH=33% ALIGN=RIGHT> <\/TD><\/TR>/',$web,$found);
echo $found[0]; // Oben gesuchter Text
Ähnliche Themen
-
VB.Net Regex Problem
Von One Way im Forum .NetAntworten: 1Letzter Beitrag: 09.09.2013, 15:20 -
Hilfe Bei Regex
Von Avenged im Forum JavaAntworten: 1Letzter Beitrag: 14.07.2013, 17:18 -
C# Regex Options
Von ThunderStorm im Forum .NetAntworten: 5Letzter Beitrag: 13.03.2013, 17:05 -
Regex von mehreren Elementen
Von Comu im Forum PHPAntworten: 5Letzter Beitrag: 29.10.2012, 21:13 -
VB.NET Regex Problem
Von Escobar im Forum .NetAntworten: 1Letzter Beitrag: 04.01.2012, 02:20
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.