WinFuture-Forum.de: Php Replace - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Replace


#1 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 24. März 2010 - 17:01

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
0

Anzeige



#2 Mitglied ist offline   daarg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.212
  • Beigetreten: 30. November 11
  • Reputation: 4
  • Geschlecht:Männlich

geschrieben 24. März 2010 - 18:04

preg_replace oder preg_match?
as wolves among sheep we have wandered [bathory, dis irae]
0

#3 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 24. März 2010 - 20:00

mhm und wie muss mein suchmuster aussehen?
<?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... :wink:
0

#4 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

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

0

#5 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 25. März 2010 - 09:35

vielen lieben dank für deine antwort. Funktioniert so :wink:

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
0

#6 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 25. März 2010 - 10:00

Beitrag anzeigenZitat (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.
0

#7 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 25. März 2010 - 21:24

wow danke für die erklärung :) jetzt verstehe ich es
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0