php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.02.2008, 12:45  
Neuer Benutzer
 
Registriert seit: 25.01.2008
Beiträge: 12
Steffi.S befindet sich auf einem aufstrebenden Ast
Standard Reguläre Ausdrücke 2)

Schon wieder hänge ich mit den Regulären Ausdrücken!

BEi einer Suchfunktion soll anschließend das Suchwort mit "umgebenden" Text ausgegeben werden. Ich dachte preg_replace() zu verwenden.

Gesucht werden soll ein string der mit <p beginnt dann folgen Zeichen oder auch nicht (.*), dann das Suchwort $such, dann wieder Zeichen oder auch nicht (.*) und schließlich ein </p>

Ich weiß was ich will, durchschaue aber die Syntax von den Dingern nicht.
Hat jemand einen Tipp?

Thanx
Steffi.S ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.02.2008, 16:15  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

preg_replace ist dafür aber ganz schlecht geeignet, da es ersetzt(replace)

preg_match o.ä. funktioniert da viel besser.

#php/QuakeNet Tutorial - Reguläre Ausdrücke , erklärung zu der syntax der reg. ausdrücke
PHP: preg_match - Manual , erklärung zu rpreg_match syntax

ansonsten hilft ausprobieren. (dann solltest du hier aber das lesen meines postes einstellen )


PHP-Code:
    $suche ="abcd";
    
$string"<p>versuch1 abcdefg</p>";
    
$treffer = array();
    
preg_match('=<p>.*'.$suche.'.*</p>='$string$treffer);
    
var_dump($treffer); 
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions
Drache ist offline   Mit Zitat antworten
Alt 07.02.2008, 16:37  
Neuer Benutzer
 
Registriert seit: 25.01.2008
Beiträge: 12
Steffi.S befindet sich auf einem aufstrebenden Ast
Standard preg_match

das mit preg_match ist ein guter hinweis.
Am Ausdruck selber muss ich noch basteln, da er im Augenblick auch weitere stringteile mit nimmt, die von <p></p> umgeben sind auch wenn das Suchwort nicht drin steht.
Aber vielen Dank schon mal
Steffi.S ist offline   Mit Zitat antworten
Alt 08.02.2008, 10:24  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

preg_replace finde ich dafür gut geeignet
PHP-Code:
$text 'abcabcdefghabcdh<p>abcdefg</p>cde<p>cde</p>abcde';
$suchwort='cde';
$pattern '#(<p.*)(' preg_quote($suchwort'#') . ')(.*</p>)#Ui';
echo 
preg_replace($pattern'$1[strong]$2[/strong]$3'$text); 
David ist offline   Mit Zitat antworten
Alt 08.02.2008, 10:52  
Neuer Benutzer
 
Registriert seit: 25.01.2008
Beiträge: 12
Steffi.S befindet sich auf einem aufstrebenden Ast
Standard

Hab das jetzt in zwei Schritten gelöst.
Erstmal mit preg_match() aus dem gesamten Text den Absatz raussuchen, in dem das Suchwort sich befindet

Code:
preg_match('=<p.*?'.$such.'.*?</p>=', $inhalt, $treffer);
Dann mit preg_replace() das Suchwort in dem Absatz hervorheben.

Es ist eine Viecherei mit den regulären Ausdrücken, aber wenn denn mal läuft ist es ne feine Sache.
Der Schubs in die richtige Richtung ist für mich da sehr hilfreich.
Danke nochmal an alle.
Steffi.S ist offline   Mit Zitat antworten
Alt 08.02.2008, 10:56  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das funktioniert auch in einem Schritt oder habe ich etwas übersehen?
David ist offline   Mit Zitat antworten
Alt 08.02.2008, 11:04  
Neuer Benutzer
 
Registriert seit: 25.01.2008
Beiträge: 12
Steffi.S befindet sich auf einem aufstrebenden Ast
Standard in einem Schritt

Bei mir donnert diese Variante den gesamten Artikel rein...
Steffi.S ist offline   Mit Zitat antworten
Alt 08.02.2008, 11:07  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Testdaten bitte. Denn mit
PHP-Code:
$text 'abcabcdefghabcdh<p>abcdefg</p>cde<p>cde</p>abcde';
$suchwort='cde';
$pattern '#(<p.*)(' preg_quote($suchwort'#') . ')(.*</p>)#Ui';
echo 
preg_replace($pattern'$1[strong]$2[/strong]$3'$text); 
erhalte ich das erwartete Ergebnis
Zitat:
abcabcdefghabcdh<p>ab[strong]cde[/strong]fg</p>cde<p>[strong]cde[/strong]</p>abcde
David ist offline   Mit Zitat antworten
Alt 08.02.2008, 11:12  
Neuer Benutzer
 
Registriert seit: 25.01.2008
Beiträge: 12
Steffi.S befindet sich auf einem aufstrebenden Ast
Standard Datenbank

Hm, OK, seh ich auch, aber wenn ich das auf den Datenbank-Text anwende gehts nicht
Steffi.S 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php reguläre ausdrücke absatz, regulärer ausdruck für (ab(c de))*, http://www.php.de/php-fortgeschrittene/500-regulaere-ausdruecke-2-a.html, absatz reguläre ausdrücke php, php reguläre ausdrücke suchmuster hervorheben, reguläre ausdrücke suchfunktion

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:38 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