php, codeschnipsel, php beispielen
Suchen und Ersetzen mit Php
   
Hypertext Preprocessor

Main
Home
Fachbücher
Support Forum
Webmaster News
Script Newsletter
Kontakt
Script Installation
Php
Php Tutorials
Impressum

Userbereich
kostenlos Anmelden
Memberliste

Script Datenbank
Script Archiv
Script Top 20
Screenshots
Testberichte

Suche

 
Script Seite



Unsere Php Scripts
Counter Script
Umfrage Script
Bilder Upload Script
Terminverwaltung
Simple PHP Forum

Script Mods
phpBB Adsense Mod

Tools und Generatoren
.htpasswd Generatoren
md5 Generatoren
base64 Generatoren
ICQ Generatoren
Colorpicker
Unix timestamp Tool
TLD Liste
Webkatalog Verzeichnis

Partner
Sprüche Treff

Net-publics.de
Net-publics hostet im modernen Rechenzentrum bei L...


Evanzo.de
Ein Anbieter wo man Domains, Linux Webhosting, Win...


weitere Anbieter

RSS Webmaster Newsfeed von Php Space RSS Webmaster Newsfeed
RSS Script Newsfeed von Php Space RSS Script Newsfeed

Statistik
7 Gäste Online
0 Member Online
657 Besucher heute
1403 Besucher gestern
 

Suchen und Ersetzen innerhalb von PHP

Sie befinden sich: Home > Php > Suchen und Ersetzen innerhalb von PHP

Für das Suchen und Ersetzen gibt es verschiedene Möglichkeiten innerhalb von PHP. Wir möchten Ihnen vor allem folgende Methoden aufzeigen:

ereg_replace(), str_replace() und preg_match(). Zunächst möchten wir Ihnen diesen drei Methoden näher bringen, um Ihnen danach anhand von Quelltexten Ihnen die Funktionsweise aufzuzeigen.

I. ereg_replace()

ereg_replace ist eine Methode, welche innerhalb eines Textes ein von Ihnen bestimmtes Suchwort sucht und dieses gegen ein von Ihnen gewünschtes Wort ersetzt.


Beachten Sie bitte dabei folgende Aspekte: Es ist wichtig, dass man bei Benutzung dieser Methode auf die Groß- und Kleinschreibung des zu suchenden Wortes achtet, denn diese Funktion unterscheidet dazwischen. So wird bei dem Suchwort 'bin' jedes Großgeschriebene 'BIN' im Text übergangen. Als weiteres gilt, dass wenn sie Zahlen ausgetauscht haben möchten, dass Sie diese in Hochkommas setzen, damit das Programm die Zahl nicht als eigenständige Zahl, sondern als Zeichen erkennt, denn nur dann kann es dieses auch als Ersetzungsmöglichkeit anerkennen.

Die Function ereg_replace() wird wie folgt aufgerufen:

<?php
    $neuer_text 
ereg_replace('zu suchender Text' ,
        
'ersetzender Text' $alter_text);
?>

Quelltext-Beispiel:

<?php
    
echo 'Hier ein Beispiel, dass Zahlen
        hier leider nicht so genutzt werden können<br>'
;
    
$zahl 5;
    
$txt 'Auf der Weide vor
        meinem Haus stehen fünf Schafe<br>'
;
    echo 
$txt;
    
$txt ereg_replace ('fünf'$zahl$txt );
    echo 
$txt;
?>

Ausgabe :

Hier ein Beispiel, dass Zahlen hier leider nicht so genutzt werden können
Auf der Weide vor meinem Haus stehen fünf Schafe
Auf der Weide vor meinem Haus stehen  Schafe




Schreiben wir nun die gewünschte Zahl in Hochkommas, damit sie als Zeichen und nicht als Zahl erkannt wird, wird das Wort fünf durch die Ziffer 5 ersetzt.

Beispiel :

<?php
    
echo 'Hier ein Beispiel, dass Zahlen
        hier leider nicht so genutzt werden können<br>'
;
    
$zahl '5';
    
$txt 'Auf der Weide vor
        meinem Haus stehen fünf Schafe<br>'
;
    echo 
$txt;
    
$txt ereg_replace ('fünf'$zahl$txt );
    echo 
$txt;
?>

Ausgabe :

Hier ein Beispiel, dass Zahlen hier leider nicht so genutzt werden können
Auf der Weide vor meinem Haus stehen fünf Schafe
Auf der Weide vor meinem Haus stehen 5 Schafe

II. str_replace()

Auch str_replace sucht aus einer Ansammlung von Zeichen sich den gewünschten Wortlaut oder Buchstaben raus und ersetzt ihn durch einen Neuen. Auch hier gilt auf die genaue Groß- und Kleinschreibung zu achten, damit die Methode all die von Ihnen gewünschten Worte finden kann.

Die Syntax hierzu lautet :

<?php
    $neuer_text 
= str_replace("gesuchter Text", "Ersetzung_durch","Zeichenfolge");
?>


Quelltext-Beispiel:

<?php
    $wort 
"Klettergerüst";
    echo 
str_replace("Kletter""Kinder"$wort);
?>

Ausgabe:

Kindergerüst

Natürlich kann man auch die Abfrage mit Arrays machen. Man braucht dabei zwei Arrays. Das erste Array enthält die zu suchenden Wörter. Das zweite Wort enthält die Wörter, die die alten Wörter ersetzen soll. Beachten Sie bitte dabei, dass Sie das gesuchte Wort und das Wort das Sie dadurch auswechseln wollen in beiden Arrays an dieselbe Stelle im Array schreiben!

Beispiel :

<?php
    $text 
"In diesen Test möchten wir die ";
    
$text .= "Wörter: Sonne, Flut und Erde ersetzen.<br>";
    
echo $text;

    
/**
    * $array_suche zusammen bauen
    */
    
$array_suche[0] = "Erde";
    
$array_suche[1] = "Sonne";
    
$array_suche[2] = "Flut";
     
    
/**
    * $array_ersetzen  zusammen bauen
    */
    
$array_ersetzen[0] = "Sand";
    
$array_ersetzen[1] = "Mond";
    
$array_ersetzen[2] = "Ebbe";
     
    
$neuer_text str_replace($array_suche$array_ersetzen
$text);
    echo 
$neuer_text;
?>

Ausgabe:

In diesen Test möchten wir die Wörter: Sonne, Flut und Erde ersetzen.
In diesen Test möchten wir die Wörter: Mond, Ebbe und Sand ersetzen.

Achten Sie nicht auf die Reihenfolge bei den Array`s, kann es dazu kommen, dass Sie nicht das erwünschte Ergebnis bekommen. Mann kann natürlich jedes Array Element einzeln ersetzen, das könnte man z.b. mit eine for() Schleife machen.

Dazu möchten wir Ihnen ein weiteres Beispiel aufzeigen:

<?php
    $text 
'Wenn ich wüsste was ich möchte, ';
    
$text .= 'wäre die Entscheidung nur halb <br>';
    echo 
$text;
    
$zeichen = array ("ü""ö""ä");
    
$ersetzen = array ("ue""oe""ae");
    
/**
    * Mit einer for() Schleife jedes Zeichen
    * einzeln ersetzten.
    */
    
for ($x 0$x 4$x++ ) {
        
$text str_replace ($zeichen[$x], $ersetzen[$x],
$text );
        echo 
$text;
    }
?>


Ausgabe:

Wenn ich wüsste was ich möchte, wäre die Entscheidung nur halb
Wenn ich wuesste was ich möchte, wäre die Entscheidung nur halb
Wenn ich wuesste was ich moechte, wäre die Entscheidung nur halb
Wenn ich wuesste was ich moechte, waere die Entscheidung nur halb
Wenn ich wuesste was ich moechte, waere die Entscheidung nur halb

Natürlich muss man nicht unbedingt eine for Schleife verwenden um z.B. mehrere Buchstaben zu ersetzen. Man hat bei der Funktion str_replace() mit der Verbindung array_keys() und array_values() die Möglichkeit, mehrere Buchstaben zu ersetzen. Nachfolgend finden sie ein Beispiel, womit man bei einem Dateinamen, alle Umlaute sowie Sonderzeichen ersetzen kann.

Beispiel für Umlaute im Dateinamen ersetzen:

<?php
    $filename 
'ärger müller.jpg';
    
$umlaute = array(
    
'ä' => 'ae',
        
'Ä' => 'ae',
        
'ß' => 'ss',
        
'ö' => 'oe',
        
'Ö' => 'oe',
        
'Ü' => 'ue',
        
'ü' => 'ue',
        
' ' => '-',
        
'à' => 'a',
        
'é' => 'e',
        
'è' => 'e'
    
);
    
$filename str_replace(array_keys($umlaute),
        
array_values($umlaute), $filename);
    echo 
$filename;
?>

Ausgabe:

aerger-mueller.jpg

Eine weitere Erklärung der PHP-Funktion str_replace() finden Sie in unserer Tutorial Datenbank. Bei dieser Erklärung, wird erklärt wie man "Das Vorkommen eines Zeichens in einer Zeichenkette suchen und mit einer eigenen String ersetzen" kann.

 

III. preg_match()



Über preg_match() lässt man innerhalb eines Textes nach einem gewünschten regulären Ausdruck suchen und die gefundene Treffer anzahl zu protokolieren.

Syntax :

<?php
    $neuer_text  
preg_match(
    
    'Zu suchender Ausdruck' ,
        
'innerhalb dieses Textes' ,
        
$rueckgaben_array,
        
PREG_OFFSET_CAPTURE Angebe_gefunden_ab_zeile,
        
Start_ab_beliebigen_Byte );
?>
 

Quelltext-Beispiel mit der Angabe von PREG_OFFSET_CAPTURE:

<?php
    $text 
"Affenschaukel";
    
$suche '/^schaukel/';
    
preg_match($suchesubstr($text5), $array,
PREG_OFFSET_CAPTURE);
    
print_r($array);
?>


Es würde nun folgende Ausgabe erzeugt werden:

Array
(
    [0] => Array
         (
            [0] => schaukel
            [1] => 0
         )
)

Quelltext-Beispiel ohne der Angabe von PREG_OFFSET_CAPTURE:

<?php
    $text 
"ersttextunddannzahl716767diese
rtextwirdnichtgefunden"
;
    
$suche '/([a-zA-Z]{1,4})([0-9]{1,7})/is';
    
preg_match($suche$text$array);
    
print_r($array);
?>

Ausgabe:

Array
(
   [0] => zahl716767
   [1] => zahl
   [2] => 716767
)  


Desweiteren möchten wir Sie auf Sonderzeichen aufmerksam machen. Unlesbare Sonderzeichen treten ungewollt auf, wenn man zum Beispiel beim Aufbau seiner Homepage auf das Charset UTF-8 benutzt. Dabei werden alle Umlaute oder andere Sonderzeichen, wie Punkte, Komma, Backslashs usw ,in “named entities” übersetzt werden und dadurch kaum noch zu lesen, sondern nur noch zu erraten werden für die Leser.




ä = ä , ö = ö ..usw. natürlich kann man dieses Problem beheben, wenn man zum Beispiel eine der oben genannten Methoden benutzt um diese Zeichen auszuwechseln. Man kann natürlich dann jeden Schritt einzeln vollziehen, dies jedoch führt zu einem sehr langen, möglicherweise unübersichtlichen Quelltext mit sehr viel Arbeit führt, oder man benutzt hier bei eine Schleifenfunktion und zwei Arrays.

In dem ersten Array sollten die gesuchten Zeichenfolgen enthalten sein, in dem zweiten Array die Richtigstellung dieser Zeichenfolgen. Die Schleife sollte dann genau darauf abgestimmt sein all diese Zeichen zu erreichen und zu ersetzen, damit Ihr Text wieder für jeden klar lesbar wird.




weiter zum nächsten Kapitel: Php Sessions

Was ist PHP ?