[PHP, Java?] Buchstaben erkennen und mit anderen ersetzen

Brian93

Well-known member
30 September 2006
378
21
Hallo!
Ich habe schon gegoogelt aber nichts richtiges gefunden, weil ich auch nicht wusste wie man solch eine Funktion nennen sollte!

Ich hab hier zum Beispiel einen Text. Und das Script soll jeden Buchstaben mit einem bestimmen anderen ersetzen.

z.B.: alle A durch C ersetzen, alle X durch D usw....

Welche Funktionen gibt es da, Buchstaben umzuwandeln?

Danke schonmal


MFG
 
Wäre mit PHP möglich :)

<?
$text = str_replace("BUCHSTABE", "NEUER BUCHSTABE", $text);
?>

In dem Text $text wird nach BUCHSTABE gesucht, wenn er gefunden wird, wird er durch NEUER BUCHSTABE ersetzt und in die Variable text gespeichert

Hoffe ich konnte dir weiterhelfen ;)
 
Das ist ja nicht schlecht :) , vielen vielen Dank ;)


MfG

EDIT:

Funktioniert leider noch nicht so wie ich das möchte :(
Wenn ich jeden Buchstaben eingebe, kommen nicht die richtigen Buchstaben

PHP:
<?php

$text="Ich bin ein super Text wo moeglichst viele Buchstaben drin vorkommen y";

$text = str_replace("a", "c", $text);
$text = str_replace("b", "d", $text);
$text = str_replace("c", "e", $text);
$text = str_replace("d", "f", $text);
$text = str_replace("e", "g", $text);
$text = str_replace("f", "h", $text);
$text = str_replace("g", "i", $text);
$text = str_replace("h", "j", $text);
$text = str_replace("i", "k", $text);
$text = str_replace("j", "l", $text);
$text = str_replace("k", "m", $text);
$text = str_replace("l", "n", $text);
$text = str_replace("m", "o", $text);
$text = str_replace("n", "p", $text);
$text = str_replace("o", "q", $text);
$text = str_replace("p", "r", $text);
$text = str_replace("q", "s", $text);
$text = str_replace("r", "t", $text);
$text = str_replace("s", "u", $text);
$text = str_replace("t", "v", $text);
$text = str_replace("u", "w", $text);
$text = str_replace("v", "x", $text);
$text = str_replace("w", "y", $text);
$text = str_replace("x", "z", $text);
$text = str_replace("y", "a", $text);
$text = str_replace("z", "b", $text);

echo $text;

Das kommt dabei heraus:
Iab bab aab aabab Tabb aa aaaabaabab baaba Baabababab bbab babaaaaab a

Ich weiß ja wo das Problem liegt, wie kriege ich das richtig hin?
Wenn aus einem w ein y wird, kommt danach ja aus allen y's a heraus

mfg
 
Zuletzt bearbeitet:
Mit Java geht das mit String::replace():
PHP:
String foo = new String("ich bin ein test");
String bar = foo.replace('i', 'o');

System.out.println(bar); // och bon eon test
 
Kann man die irgendwie nebeneinander schalten, oder würde das meinem Problem im 4. Post nicht helfen?

Danke

MfG
 
PHP:
$arraysuche=array("a","b","c"....);
$arrayersetzen("c","d","e"....);

$text = str_replace($arraysuche, $arrayersetzen, $text);


ungetestet, aber glaube das er dann niocht mehrfach austauscht (also bereits getauschtes wird glaube ich net getauscht oder? mußte mal testen.
 
PHP:
$arraysuche=array("a","b","c"....);
$arrayersetzen("c","d","e"....);

$text = str_replace($arraysuche, $arrayersetzen, $text);


ungetestet, aber glaube das er dann niocht mehrfach austauscht (also bereits getauschtes wird glaube ich net getauscht oder? mußte mal testen.

Heraus kommt ede, also das gleiche Problem :(

Aber Danke
 
PHP:
$arraysuche=array("a","b","c"....);
$arrayersetzen("c","d","e"....);

$text = str_replace($arraysuche, $arrayersetzen, $text);
Du hast hinter $arrayersetzen das =array vergessen.

PHP:
$search = array('a', 'b', 'c');
$replace = array('c', 'd', 'e');

$replaced = str_replace($search, $replace, 'Das ist ein Text...');
 
Da mir gerade etwas langweilig war habe ich eine Funktion gebastelt, die deine gewünschte Aufgabe erledigen sollte ;)

PHP:
<?php

function buchstaben_ersetzen($text, $verschiebung)
{
        if ($verschiebung > 26 || $verschiebung < -26)
        {
                return false;
        }

        if ($verschiebung < 0)
        {
                $verschiebung = ($verschiebung - $verschiebung * 2);
        }
        else
        {
                $verschiebung = (26 - $verschiebung);
        }

        $buchstaben_suche_lower = array('a', 'b', 'c', 'd', 'e', 'f', 'g',
                                                                'h', 'i', 'j', 'k', 'l', 'm', 'n',
                                                                'o', 'p', 'q', 'r', 's', 't', 'u',
                                                                'v', 'w', 'x', 'y', 'z');
        $buchstaben_suche_upper = array();

        foreach($buchstaben_suche_lower as $key => $buchstabe)
        {
                array_push($buchstaben_suche_upper, strtoupper($buchstabe));

                $key_neu = $key + $verschiebung;

                if ($key_neu > 25)
                {
                        $buchstaben_ersetze_upper[$key_neu]      = strtoupper($buchstabe);
                        $buchstaben_ersetze_lower[($key_neu - 26)] = $buchstabe;
                }
                else
                {
                        $buchstaben_ersetze_upper[($key_neu + 26)] = strtoupper($buchstabe);
                        $buchstaben_ersetze_lower[$key_neu]      = $buchstabe;
                }
        }

        ksort($buchstaben_ersetze_lower);
        ksort($buchstaben_ersetze_upper);

        $buchstaben_suche   = array_merge($buchstaben_suche_lower, $buchstaben_suche_upper);
        $buchstaben_ersetze = array_merge($buchstaben_ersetze_lower, $buchstaben_ersetze_upper);

        for ($text_pos = 0; $text_pos < strlen($text); $text_pos++)
        {
                $buchstabe = substr($text, $text_pos, 1);
                $buchstabe_key = array_search($buchstabe, $buchstaben_suche);
                $buchstabe = str_replace($buchstaben_suche[$buchstabe_key], $buchstaben_ersetze[$buchstabe_key], $buchstabe);
                $text = substr($text, 0, $text_pos) . $buchstabe . substr($text, $text_pos + 1);
        }

        return $text;
}

echo buchstaben_ersetzen ('Hallo Welt', 2);

?>
 
PHP:
electro at whatever dot com
31-May-2007 09:21
<?php

/**
 * Rotate each string characters by n positions in ASCII table
 * To encode use positive n, to decode - negative.
 * With n = 13 (ROT13), encode and decode n can be positive.
 *
 * @param string $string
 * @param integer $n
 * @return string
 */
function rotate($string, $n) {
...

Tut's auch! ;) Oder die anderen User Notes beachten auf https://de2.php.net/str_rot13. :) Ist nämlich trotzdem noch eine Rotation wohl oder übel.
 
Würde es bei dem Beispiel nicht auch reichen dem Ascii Wert des Buchstaben 2 zuzuaddieren und das wieder umzuwandeln? Naja und wenn der Wert größer als 65 (A) + 25 wird fängt man wieder bei bei 65 an bzw. bei 97(a)
 
Zuletzt bearbeitet:
Öhm..

PHP:
$string = "teststring";
$string = strtr($string, "abcdefghijklmnopqrstuvwxyz", "bcdefghijklmnopqrstuvwxyza");
echo $string;

Ausgabe (nicht getestet^^): uftutusjoh


Suchst du sowas?