SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.03.2010, 14:45:35
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 36
Beiträge: 21
preg_replace_all array als replace

Hallo

Aufgabenstellung:

Ich muss den Text zwischen zwei HTML tags (z.b.: <pre>zufindendertext</pre>) finden, verändern und wieder hineinschreiben.

Aus
HTML-Code:
<body>
<pre>text1</pre>
Irgendwas
<pre>text2</pre>
Irgendwas
<pre>text3</pre>
</body>
soll werden:

HTML-Code:
<body>
<pre>veränderter text1</pre>
Irgendwas
<pre>veränderter text2</pre>
Irgendwas
<pre>veränderter text3</pre>
</body>
Mein Ansatz was das ich zuerst mit preg_match alle <pre>|</pre> suche, verändere und in ein array speichere. Was soweit auch funktioniert.

Als zweiten schritt will ich mit preg_replace_all die werte aus dem Array wieder einsetzen:

Code:
preg_replace("/<pre>([\s\S]*?)<\/pre>/e", "$array" ,$string)
Dadurch erhalte ich:
HTML-Code:
<body>
<pre>Array</pre>
Irgendwas
<pre>Array</pre>
Irgendwas
<pre>Array</pre>
</body>
Leider nicht das gewünschte. In der Dokumentation stehn leider nur die Fälle:
pattern = array
pattern und replace = array

aber nicht:
nur replace = array

Bin ich zu blöd die Doku zu lesen, geh ich das ganze falsch an oder ist der Fehlerteufel drin?
Mit Zitat antworten
  #2  
Alt 18.03.2010, 17:38:36
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: preg_replace_all array als replace

Wenn ich das richtig gelesen habe müsstest du den Inhalt von allen ermittelten PRE in ein Array schreiben. Gleichzeitig ein Array füllen, welches den veränderten Inhalt besitzt um es dann mit preg_replace zu ersetzen.
Im Handbuch ist ein ähnliches Beispiel.

PHP-Code:
<?php
$zeichenkette 
'Der schnelle braune Fuchs sprang über den faulen Hund.'/*wäre dein HTML-Code*/

/*Suchmuster wäre der Inhalt der enthaltenen PRE*/
$suchmuster = array();
$suchmuster[0] = '/schnelle/';
$suchmuster[1] = '/braune/';
$suchmuster[2] = '/Fuchs/';

/*ersetzung das Array mit veränderten Inhalt*/
$ersetzungen = array();
$ersetzungen[2] = 'Bär';
$ersetzungen[1] = 'schwarze';
$ersetzungen[0] = 'langsame';

echo 
preg_replace($suchmuster$ersetzungen$zeichenkette);
Mit Zitat antworten
  #3  
Alt 18.03.2010, 18:07:35
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 36
Beiträge: 21
AW: preg_replace_all array als replace

ja genau das hab ich auch gelesen.

Das Problem ist eben das ich nicht wie im Beispiel nach verschiedenen Sachen suche sondern immer nach <pre>|</pre>.
Die Anzahl der <pre>'s ist immer variabel.
Mit Zitat antworten
  #4  
Alt 18.03.2010, 18:32:33
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: preg_replace_all array als replace

Ist mir schon klar.
Anhand deines Beispieles wäre es.
PHP-Code:
<?php
$zeichenkette 
'<body><pre>text1</pre>Irgendwas<pre>text2</pre>Irgendwas<pre>text3</pre></body>';
/*Wäre das Ergebnis von 'Mein Ansatz was das ich zuerst mit preg_match alle <pre>|</pre> suche, verändere und in ein array speichere.' nur ohne veränderten Text*/
$suchmuster = array();
$suchmuster[0] = '/text1/';
$suchmuster[1] = '/text2/';
$suchmuster[2] = '/text3/';

/*Wäre das Ergebnis von: Mein Ansatz was das ich zuerst mit preg_match alle <pre>|</pre> suche, verändere und in ein array speichere. mit veränderten Text*/
$ersetzungen = array();
$ersetzungen[0] = 'veränderter Text';
$ersetzungen[1] = 'veränderter Text';
$ersetzungen[2] = 'veränderter Text';

echo 
preg_replace($suchmuster$ersetzungen$zeichenkette);
?>
Du suchst ja mit preg_match den Text zwischen <pre></pre>. Bevor du ihn veränderst schreibst du ihn in das Array $suchmuster[]. Dadurch erhälst du ein belibig grosses Array je nach Anzahl der vorhandenen PRE. Hat dein preg_match ein Ergennis wandelst du dieses nach dem Eintragen in $suchmuster in deinen gewünschten Text um und schreibst ihn in $ersetzung[].
Dadurch erhälst du zwei identisch grosse Arrays mit identischen Schlüssel, die du anschliessend gegeneinander ersetzen kannst.
Mit Zitat antworten
  #5  
Alt 18.03.2010, 19:05:05
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: preg_replace_all array als replace

Allerdings denke ich, daß du mit DOM besser fährst. Hier mal ein Beispiel um das Array $suchmuster zu füllen.

PHP-Code:
$dom = new DomDocument();
$dom->prevservWhiteSpace false;

if (!@
$dom->loadHTMLFile("pfad/zum/Html/dokument/mein.html")) {
    echo 
"mein.html existiert nicht!\n";
    return;
}

$imageList $dom->getElementsByTagName('pre');
$imageCnt  $imageList->length;

for (
$idx 0$idx $imageCnt$idx++) {
    
$suchmuster[]= $imageList->item($idx)->nodeValue;
}
print_r($suchmuster);

Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arrayblind tlang78 PHP Grundlagen 2 30.06.2009 15:08:33
Array formatiert ausgeben Faang PHP Grundlagen 3 15.08.2008 01:47:43
Array umstrukturieren Tikiwiki PHP Grundlagen 2 28.07.2008 13:24:28
Doppelte einträge aus einem Mehrdimensionalen Array aussortieren und löschen PHoenix_KM PHP für Fortgeschrittene und Experten 2 17.04.2008 18:19:53
Einzelne Daten aus Textdatei Auslesen azubinator PHP Grundlagen 153 17.12.2004 13:36:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:44:58 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt