Hallo Leute gibt es eine Funktion in PHP oder hat sonst wer eine IDEE womit ich folgendes Problem Lösen könnte?
Also ich hab folgenden HTML CODE:
<div class="start">teasdasdada</div>
und ich möchte das "teasdasdada" jetzt löschen. oder gleich das ganze "<div class="start">teasdasdada</div>" das wäre egal.
gibt es irgendeine Funktion mit der ich das in etwa so lösen könnte? Hab leider nichts gefunden.
$starttag = '<div class="start">'
$endtag = '</div>
mit regulären Ausdrücken kenn ich mich leider nicht aus... desshalb weis ich nicht obs damit gehn würde bzw wie...
Vielen lieben dank für eure bemühungen
Seite 1 von 1
Php Replace
Anzeige
#2
geschrieben 24. März 2010 - 18:04
as wolves among sheep we have wandered [bathory, dis irae]
#3
geschrieben 24. März 2010 - 20:00
mhm und wie muss mein suchmuster aussehen?
versteh ich leider nicht das suchmuster müsste jetzt <div class="start"> und </div> beinhalten und alles was drin ist bzw von mir aus auch alles mit '' ersetzen...
<?php $test = '<div class="start">lllooolll</div>'; $suchmuster = ''; $ersetzung = ''; echo preg_replace($suchmuster, $ersetzung, $test);
versteh ich leider nicht das suchmuster müsste jetzt <div class="start"> und </div> beinhalten und alles was drin ist bzw von mir aus auch alles mit '' ersetzen...
#4
geschrieben 24. März 2010 - 20:40
<?php $test = '<div class="start">lllooolll</div>'; $suchmuster = '/<div class=\"start\">.*?<\/div>/si'; $ersetzung = ''; echo preg_replace($suchmuster, $ersetzung, $test); ?>
Müsste so funktionieren.
Dieser Beitrag wurde von aeris bearbeitet: 24. März 2010 - 20:41
#5
geschrieben 25. März 2010 - 09:35
vielen lieben dank für deine antwort. Funktioniert so
Kannst du mich den suchstring noch erklären?
wieso nimmst du ganz am anfang /
\" ist klar
.*? heist soviel wie alles was dazwischen liegt? wieso aber was bedeutet der . , * ,? genau?
danach escapest du das /div ... ist klar
wieso am schluss /si ?
vielen lieben dank
Kannst du mich den suchstring noch erklären?
$suchmuster = '/<div class=\"start\">.*?<\/div>/si';
wieso nimmst du ganz am anfang /
\" ist klar
.*? heist soviel wie alles was dazwischen liegt? wieso aber was bedeutet der . , * ,? genau?
danach escapest du das /div ... ist klar
wieso am schluss /si ?
vielen lieben dank
#6
geschrieben 25. März 2010 - 10:00
Zitat (Party: 25.03.2010, 09:35)
...
PHP benutzt bei Regex die Perl Syntax, da ist es ueblich den Regulaeren Ausdruck zwischen zwei Zeichen zu stellen, ob das nun /, ~, %, {} oder was auch immer, ist egal.
/regex/, ~regex~, %regex%, {regex} etc...
\" Ich habe beim testen das Suchmuster zwischen "" gestellt, daher die " escaped, geht bei '' aber auch ohne.
.*?
Der Punkt bedeutet es kann irgend ein Zeichen sein.
Der Stern sagt, dass sich der Punkt, also irgend ein Zeichen, garnicht oder unendlich mal wiederholen kann (Also eine beliebig lange Reihenfolge von irgendeinem Zeichen oder auch nichts)
Das Fragezeichen dient dazu, dass er beim ersten </div> aufhoert zu suchen (nennt sich lazy match). Haette man zwei </div> drinnen wuerde er das Erste ueberspringen und erst das Letzte als Ende ansehen, Beispiel:
aoeuhasno<div class="start">abcd</div>aoeunth<div class="start">blablabla</div>aoeuhsantoeu
ohne dem Fragezeichen wuerde er das hier finden:
aoeuhasno<div class="start">abcd</div>aoeunth<div class="start">blablabla</div>aoeuhsantoeu
Er ignoriert also das erste </div> weil dahinter ja noch eins ist, nicht gut! :)
<\/div>
Da wir ja / am Anfang und Ende haben, muessen wir das / vom </div> escapen, weil es ja nicht das Ende darstellt. Wuerden wir ein anderes Zeichen am Anfang und Ende haben, braeuchten wir das nicht.
si
Sind weitere optionen die besagen:
i - ignoriere ob grosz oder klein geschrieben
s - der Punkt . findet auch \n, sonst wuerde Regex <divs> die ueber mehrere Zeilen gehen ignorieren.
Mehr dazu hier.
Thema verteilen:
Seite 1 von 1