php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.11.2006, 11:38  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard Ersetzen einzelner Buchstaben

Hallo!

Ich bräuchte eine Funktion, die mir einzelne Buchstaben ersetzt. Man könnte das ganze auch mit nem switch lösen, is mir aber irgendwie zu blöd.
Damit sieht das ganze ungefähr so aus:
PHP-Code:
    switch($chr){
        case 
"a"$chr "o"; break;
        case 
"o"$chr "n"; break;
        case 
"n"$chr "z"; break;
        case 
"b"$chr "b"; break;
        case 
"c"$chr "d"; break;
        case 
"d"$chr "f"; break;
        case 
"f"$chr "j"; break;
        case 
"j"$chr "r"; break;
                ...
    } 
Gibt es da vllt irgendwas dem ich nur etwas übergebe wie "abcdefg.." und "obdf..." un der mir jedes Zeichen einzeln ersetzt? Also "a" durch "o", "b" durch "b", ...
Unbekanntes_Pferd ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.11.2006, 11:47  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

str_replace ist was du suchst.
Dort kannst du statt eines einzelnen Strings der ersetzt werden soll auch ein Array angeben.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 25.11.2006, 12:29  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

da würde aber dann in diesem fall direkt a -> o -> n -> z ersetzt werden, oder nicht?
Unbekanntes_Pferd ist offline  
Alt 25.11.2006, 12:39  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Unbekanntes_Pferd
da würde aber dann in diesem fall direkt a -> o -> n -> z ersetzt werden, oder nicht?
Ich versteh nicht ganz was du meinst...

Schau dir einfach mal das Beispiel aus dem Manual an:
Code:
// Provides: You should eat pizza, beer, and ice cream every day
$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy  = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 25.11.2006, 12:42  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

das hab ich so gemacht.
str_replace wird ja dann im grunde so lange ausgeführt, bis nichts mehr ersetzt werden kann:
PHP-Code:
$vowels = array("a""e""i""o""u""A""E""I""O""U");
$onlyconsonants str_replace($vowels"""Hello World of PHP"); 
liefert: "Hll Wrld f PHP"

ich will aber das bei mir nur einmal ein Buchstabe ersetzt wird... So wäre das ja dasselbe wie bei meinem switch oben, ohne die breaks
Unbekanntes_Pferd ist offline  
Alt 25.11.2006, 12:48  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Also hab eben was nich ganz verstanden. Du willst also sobald du einen der Buchstaben ersetzt hast aufhören!

PHP-Code:
<?php
$string 
'Hello my little world';

$chars = array(
    
'a' => 'o',
    
'o' => 'n',
    
'n' => 'z',
    
'b' => 'b',
    
'c' => 'd',
    
'd' => 'f',
    
'f' => 'j',
    
'j' => 'r'
);

foreach (
$chars as $search => $replace) {
    if (
strpos($string$search) !== FALSE) {
        
$string str_replace($search$replace$string);
        break;
    }
}

echo 
$string;
?>
Jetzt wird für jedes Buchstabenpaar die Schleife durchgegangen, wenn der Buchstabe der zu ersetzen ist im String gefunden wird, wird dieser Buchstabe durch sein Gegenstück ersetzt und die Schleife abgebrochen damit nicht weitergesucht wird!

Jetzt werden halt z.B. wenn 'a' gefunden wird alle 'a' in dem String durch 'o' ersetzt. Möchtest du auch noch dass nur ein einziges mal ersetzt wird?


Argh ey das wars wohl auch nicht! Man du musst bissl genauer erklären, einmal sagst du das jedes Zeichen einmal ersetzt werden soll, dann kommt wieder es soll nur ein Zeichen einmal ersetzt werden ... :/ Nerv!

Dann probiers damit:
PHP-Code:
<?php
$string 
'Hello my little World';

$search = array('a''o''n''b''c''d''f''j');
$replace = array('o''n''z''b''d''f''j''r');

$string str_replace($search$replace$string);

echo 
$string;
?>
Hier wird jetzt jeder Buchstabe mit seinem Gegenstück ersetzt. Wenn ein Buchstabe ersetzt wurde wird dieser aber nicht mehr ersetzt.
Flor1an ist offline  
Alt 25.11.2006, 13:07  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ich verstehe ihn so, dass ein Zeichen, das gerade ersetzt wurde, nicht beim nächten Buchstenpaar gleich wieder ersetzt wird. Sonst landet am Ende fast alles bei einem 'r'.

Es sind ja massig Buchstaben auf der rechten und auf der linken Seite vorhanden.


Wenn das keine zyklische Ersetzung ist, könnte man sich damit behelfen, dass zuerst die letzten Zeichen ersetzt werden, also j->r und danach f->j.
So sollte es keine Probleme geben.

Wird bei str_replace garantiert streng nach Reihenfolge im Array vorgegangen?
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 25.11.2006, 13:29  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

eigentlich ist es ganz einfach, ich habe irgendeinen buchstaben zwischen a und z, und dieser buchstabe soll durch einen anderen buchstaben aus a bis z ersetzt werden.

wenns einem hilft: es ist eine permutation: (aonzqehcdfjripyswmvktglxu)(b)

wenns alles nich geht, mach ichs einfach mit dem switch, ist halt nur etwas mehr schreibarbeit

@razor: auch bei deinem unteren quellcode wird mir ein einfaches "a" durch ein "z" ersetzt
Unbekanntes_Pferd ist offline  
Alt 25.11.2006, 14:34  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich glaub jetzt weiß ich so langsam was du möchtest ^^ du willst nur einen einzigen Buchstaben übergeben und ersetzen?
Da wäre hier ne Funktion:

PHP-Code:
<?php
function chr_replace ($chr) {
    
$replace = array(
        
'a' => 'o',
        
'o' => 'n',
        
'n' => 'z',
        
'b' => 'b',
        
'c' => 'd',
        
'd' => 'f',
        
'f' => 'j',
        
'j' => 'r'
    
); 
    if (
array_key_exists($chr$replace)) return $replace[$chr];
    else return 
$chr;
}
?>
Willste jetzt nen ganzen String so ersetzen dann musste halt jeden Buchstaben durchgehen ...

PHP-Code:
<?php
$string 
'Hello World';

$string2 '';
for (
$i 0$i strlen($string); $++) {
    
$string2 .= chr_replace($string{$i});
}

echo 
$string2;
?>
Flor1an ist offline  
Alt 25.11.2006, 14:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Warum schaut ihr nicht ins Manual?

http://de.php.net/str_replace
PHP-Code:
<?php
function str_replace_once($search$replace$subject, &$offset 0) {
   if (
is_array($search)) {
       if (
is_array($replace)) {
           foreach (
$search as $x => $value$subject str_replace_once($value$replace[$x], $subject$offset);
       } else {
           foreach (
$search as $value$subject str_replace_once($value$replace$subject$offset);
       }
   } else {
       if (
is_array($replace)) {
           foreach (
$replace as $value$subject str_replace_once($search$value$subject$offset);
       } else {
           
$pos strpos($subject$search$offset);
           if (
$pos !== false) {
               
$offset $pos+strlen($search);
               
$subject substr($subject0$pos) . $replace substr($subject$offset);
           }
       }
   }
  
   return 
$subject;
}
?>
Zergling-new ist offline  
 


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Buchstaben mit fixen Pixelbreiten in Arrays verpackt rezix PHP Tipps 2008 11 06.03.2008 16:12
prüfen auf buchstaben Canni PHP Tipps 2006 18 12.12.2006 06:02
String durchsuchen und ersetzen unabhängig von Groß / KLein PHP Tipps 2006 2 09.07.2006 23:29
Nur mit den ersten 3 Buchstaben einer Variable arbeiten DDogg PHP Tipps 2006 4 16.06.2006 14:20
einen buchstaben großschreiben lassen? comiceman PHP Tipps 2006 8 12.06.2006 19:14
String, Zeichen ersetzen mit Ausnahmen! I-Spy PHP Tipps 2006 3 26.05.2006 11:31
buchstaben ersetzen mokus PHP Tipps 2006 8 20.04.2006 20:44
String ersetzen Benshee PHP Tipps 2006 4 02.04.2006 21:43
Liste nach Buchstaben und Sonderzeichen (!) sortiert odaa PHP-Fortgeschrittene 8 11.10.2005 16:26
Anführungszeichen ersetzen PHP Tipps 2005-2 6 28.09.2005 20:39
unbekannten teilstring mit anfang/end-markierung ersetzen janni PHP Tipps 2005 14 29.04.2005 14:53
[Erledigt] includ. Text ersetzen ohne vars PHP Tipps 2004 3 13.09.2004 23:16
[Erledigt] RegExp: Dynamisches Ersetzen PHP-Fortgeschrittene 5 23.07.2004 13:39
Reguläre Ausdrücke beim suchen und ersetzen Off-Topic Diskussionen 5 05.07.2004 15:35
[Erledigt] Erster Buchstaben von ganzem Wort PHP Tipps 2004 5 28.06.2004 10:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php buchstaben ersetzen, php ist char ein buchstabe, buchstaben ersetzen php, php char ersetzen, php einzelne zeichen ersetzen, icq buchstaben zeichen, php buchstabe ersetzen, php einzelnes zeichen ersetzen, php einzelne buchstaben ersetzen, php chars ersetzen, buchstaben ersetzen, php string char ersetzen, php char replace, php ersten buchstaben ersetzen, http://www.php.de/php-tipps-2008/42896-ersetzen-einzelner-buchstaben.html, php einzelner buchstabe, char ersetzen php, php character ersetzen, icq buchstaben ersetzen, php buchstaben ersetzen lassen

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.