php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.12.2011, 17:27  
LMS
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
LMS befindet sich auf einem aufstrebenden Ast
Standard REGEX benötigt!

Hey.

Ich will aus einem importierten Quellcode, in der Variable "text" alle Links in diesem Format extrahiert haben:

<a href="thread.php?threadid=XXXXXX">YYYYYYYYYYYYYYYY YYYYY</a>

Die X stehen für 6 Zahlen, und die Y für irgendwas.

Bin bisher soweit: $pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';

Das ganze ist bisher geklaut.. hab 0 Plan von Regex.. könnt ihr mir schnell eine Version nennen, mit der ich X und Y auslesen kann? Auf der Seite sind (logischerweise) mehrere solche Bereiche und ich will jeden einzeln verarbeiten.

Mein gesamter Code bisher

PHP-Code:
$pattern '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
            
$text getcode('mhmhmhmhmh');
            while(
preg_match($pattern$text$txt))
            {
                if(
strstr($txt[3], "thread.php?threadid=") && !strstr($txt[5], "Zum letzten Beitrag gehen"))
                {
                    
$id $txt[3];
                    
$id split("="$id);
                    
$id[1] = split("&"$id[1]);
                    
                    
print_r($id);
                }
                
$text $txt[1]." ".$txt[6];
            } 
Sozusagen slow and dirty.

Greets
lms
LMS ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.12.2011, 17:38  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Kopier den Link in deine Regexp, maskiere Sonderzeichen, ersetzt die Variablen durch (.*) und guck dir an was preg_match_all() dabei ausspuckt.

Code:
$pat = '`<a href="thread.php?threadid=(.*)">(.*)</a>`siU';
preg_match_all( $pat, $sub, $mat );
print_r( $mat );
Und wenn das nicht klappt, gehst du halt so weit zurück bis was gefunden wird.
chorn ist offline   Mit Zitat antworten
Alt 14.12.2011, 17:45  
Neuer Benutzer
 
Registriert seit: 22.02.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
niiku befindet sich auf einem aufstrebenden Ast
Standard Tipp

Für einfache RegEx zu erstellen verwende ich oft diese Seite:
http://txt2re.com/

Diese hat mir schon oft geholfen
niiku ist offline   Mit Zitat antworten
Alt 15.12.2011, 14:06  
sph
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
sph befindet sich auf einem aufstrebenden Ast
Standard

Hi,

RegEx sind spannend - ich versteh nicht viel davon, aber damit rumzubasteln ist besser als Sudoku


Ich hab also mal diesen Teststring genommen:
PHP-Code:
$teststring 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, <a href="thread.php?threadid=aaa111">aaa1 aa111 aaa1 aaa111</a> sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. <a href="thread.php?threadid=aaa222">aaa2 aa222 aaa2 aaa222</a> At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, <a href="thread.php?threadid=aaa333">aaa3 aa333 aaa3 aaa333</a> no sea takimata sanctus est Lorem ipsum dolor sit amet.'
...und ihn damit durchsucht:
PHP-Code:
$pattern '#<a href="thread.php\?threadid=(.*?)">(.*?)</a>#';

if (
preg_match_all($pattern$teststring$result)){
    
print_r($result);

Dann erhalte ich folgende Ausgabe:
Code:
Array
(
    [0] => Array
        (
            [0] => <a href="thread.php?threadid=aaa111">aaa1 aa111 aaa1 aaa111</a>
            [1] => <a href="thread.php?threadid=aaa222">aaa2 aa222 aaa2 aaa222</a>
            [2] => <a href="thread.php?threadid=aaa333">aaa3 aa333 aaa3 aaa333</a>
        )

    [1] => Array
        (
            [0] => aaa111
            [1] => aaa222
            [2] => aaa333
        )

    [2] => Array
        (
            [0] => aaa1 aa111 aaa1 aaa111
            [1] => aaa2 aa222 aaa2 aaa222
            [2] => aaa3 aa333 aaa3 aaa333
        )

)

Wie man sowas Performance-Technisch am besten macht weiß ich nicht, aber mit dem Ergebnis solltest du doch was anfangen können


Grüße!


Nachtrag:
...ich schwöre dass ich mir die RegEx selber zusammengebaut hab, wenn auch nur mit Google, Anleitungen und RegEx-Tool. Dass dabei so ziemlich genau das rausgekommen ist was chorn gepostet hat ist mir tatsächlich erst jetzt aufgefallen

Geändert von sph (15.12.2011 um 20:48 Uhr). Grund: weil ich es kann!
sph ist offline   Mit Zitat antworten
Alt 15.12.2011, 19:49  
LMS
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
LMS befindet sich auf einem aufstrebenden Ast
Standard

Aber ich brauchs ja so, dass es den Text durchwühlt..
LMS ist offline   Mit Zitat antworten
Alt 15.12.2011, 20:08  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von LMS Beitrag anzeigen
Aber ich brauchs ja so, dass es den Text durchwühlt..
Dann lies den Beitrag von sph nochmal ganz aufmerksam. Worauf wendet er den RegEx wohl an?
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 15.12.2011, 20:46  
sph
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
sph befindet sich auf einem aufstrebenden Ast
Standard

ups, das wollt ich garnicht posten...
sph ist offline   Mit Zitat antworten
Alt 15.12.2011, 21:56  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
hab 0 Plan von Regex..
Scheinbar nicht nur von Regex, wie wäre es mal mit einem Grundkurs in PHP?

Zitat:
Aber ich brauchs ja so, dass es den Text durchwühlt..
Ist das dein Ernst? Du kannst $teststring nicht durch $text ersetzen? Bemüh dich doch mal ein bisschen selbst

http://tut.php-quake.net/de/
chorn ist offline   Mit Zitat antworten
Alt 15.12.2011, 21:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
php.de > Webentwicklung > PHP-Fortgeschrittene
Pffff.

[MOD: verschoben]


http://www.php.de/php-fortgeschritte...uncements.html
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.12.2011, 10:26  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Muß es hier überhaupt RegEx sein? Wenn es doch A-Tags sind, würde doch DOMDocument und XPath Sinn machen, oder irre ich?!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verschachtelte RegEx CoKeSiDe PHP Einsteiger 2 27.06.2011 22:10
[Erledigt] RegEx - Parse funktioniert in RegEx tool, preg_match findet nichts avaboo PHP Einsteiger 9 27.05.2011 13:42
RegEx für Youtube Kanalseite VideoID hjw-kunstwerk PHP Einsteiger 15 08.03.2011 15:58
Probleme bei einem einfachen Regex smilla PHP Einsteiger 5 14.12.2010 11:38
RegEx für E-Mails (preg_replace) N4bla PHP Tipps 2010 4 18.11.2010 21:53
[Erledigt] Kleine Regex Frage Bubelbub PHP-Fortgeschrittene 8 25.07.2010 23:39
[Erledigt] regex | variables wort herausfiltern Knechtle PHP Tipps 2010 6 05.03.2010 17:21
Regex: Auslesen der Meta-Tags einer Webseite Sucheingrenzung pepe24 PHP Tipps 2008 12 31.05.2008 15:41
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
[gelöst :D ] regex tuts nur einmal pro zeile notyyy PHP Tipps 2008 17 24.09.2007 15:40
Wieso benötigt man suphp? Sorcio PHP Tipps 2006 6 04.04.2006 15:06
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
grundkurs regular expression, regex variables

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum