Webstatt.org - Community seit 2006 - 2012 (2024?)

ereg_replace liefert nur ersten Buchstaben

user-342
03.08.2006 13:40

Hallo Zusammen,

Ich bin gerade dabei ein Scripts zu programmieren das aus einem Link (z.B. Über Uns) einen "Browserfähigen" Link macht (ueber_uns.html). Dazu benutze ich die Funktion ereg_replace().

Hier mal ein Teil meines Scripts:

for ($a = 1; $a <= $links; $a++) {
$link_ebene1_neu_1[''.$a.''] = ereg_replace(" " , "_", $link_ebene1_neu[''.$a.'']);
$link_ebene1_neu_2[''.$a.''] = ereg_replace("ä", "ae" , $link_ebene1_neu_1[''.$a.'']);
$link_ebene1_neu_3[''.$a.''] = ereg_replace("ü","ue" , $link_ebene1_neu_2[''.$a.'']);
$link_ebene1_neu_4[''.$a.''] = ereg_replace("ö","oe" , $link_ebene1_neu_3[''.$a.'']);
$link_ebene1_neu_5[''.$a.''] ="".$link_ebene1_neu_4.".html";


$link_ebene1_neu['1'] wäre jetzt Über Uns. $link_ebene1_neu_5['1'] ist dann einfach Ü.html.

Ich komme nicht mehr weiter. Hat mir jemand einen Tipp?

w4p

Avatar user-162
03.08.2006 13:42

wäre hier str_replace nicht einfachter?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-255
03.08.2006 13:43

..und wozu denn die ganzen Leerstrings? 0.o Phreak..

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-342
03.08.2006 14:05

hab ereg_replace() mal durch str_replace ersetzt. funktioniert trotzdem nicht.

was meinst du mit leerstrings?

user-135
03.08.2006 14:25

Original von user-342
Hallo Zusammen,

Ich bin gerade dabei ein Scripts zu programmieren das aus einem Link (z.B. Über Uns) einen "Browserfähigen" Link macht (ueber_uns.html). Dazu benutze ich die Funktion ereg_replace().

Hier mal ein Teil meines Scripts:

for ($a = 1; $a <= $links; $a++) {
$link_ebene1_neu_1[''.$a.''] = ereg_replace(" " , "_", $link_ebene1_neu[''.$a.'']);
$link_ebene1_neu_2[''.$a.''] = ereg_replace("ä", "ae" , $link_ebene1_neu_1[''.$a.'']);
$link_ebene1_neu_3[''.$a.''] = ereg_replace("ü","ue" , $link_ebene1_neu_2[''.$a.'']);
$link_ebene1_neu_4[''.$a.''] = ereg_replace("ö","oe" , $link_ebene1_neu_3[''.$a.'']);
$link_ebene1_neu_5[''.$a.''] ="".$link_ebene1_neu_4.".html";


$link_ebene1_neu['1'] wäre jetzt Über Uns. $link_ebene1_neu_5['1'] ist dann einfach Ü.html.

Ich komme nicht mehr weiter. Hat mir jemand einen Tipp?

w4p

Du solltest hier besser die Funktion strtr nutzen.
Und auch dein ''.$a.'' ist komplett unnötig!
Machs z.b. so:


for ($a = 1; $a <= $links; $a++)
$link[$a] = strtr($link_ebene1_neu[$a], array(' ' => '_', 'ä' => 'ae', 'ü' => 'ue', 'ö' => 'oe'zwinkern).'html';

Gruß user-135

user-329
03.08.2006 14:26

$search = array(':ss:','ae','Ae','oe','Oe','Ue','ue''zwinkern;
$replace = array('ß','ä','Ä','ö','Ö','Ü','ü'zwinkern;

$blabla = str_replace($search, $replace, $row['blub']);

falls du db benutzt müsste auch ohne das $row funktionieren..
liebe grüße

user-329
03.08.2006 14:31

also das row[blub] gibt ja nur an wo es drauf angewendet werden soll musst du deinen anforderungen anpassen.. und ins array kannst natürlich noch andere sachen einfügen z.b. im search '.html' und dann im replace einfach leerlassen '' dann wird kein .html angezeigt etc

// seh grad mein skript arbeitet genau andersrum als du es willst.. eg dient es mir um nen .jpg bild nur den dateinamen als beschreibung anzuzeigen.. musst du halt die reihenfolge ändern

user-303
03.08.2006 14:38

Original von user-135
Machs z.b. so:


for ($a = 1; $a <= $links; $a++)
$link[$a] = strtr($link_ebene1_neu[$a], array(' ' => '_', 'ä' => 'ae', 'ü' => 'ue', 'ö' => 'oe'zwinkern).'html';

Gruß user-135

Orginal von http://de3.php.net/strtr
string strtr ( string str, string from, string to )

string strtr ( string str, array replace_pairs )

Diese Funktion gibt eine Kopie von str zurück, in der alle Vorkommen jedes Zeichens von from in das korrespondierende Zeichen in to umgewandelt wurde.

Haben from und to eine unterschiedliche Länge, werden die überzähligen Zeichen im jeweils längeren Parameter ignoriert.

das trifft bei deinem code zu

user-135
03.08.2006 14:52

Original von user-303
Original von user-135
Machs z.b. so:


for ($a = 1; $a <= $links; $a++)
$link[$a] = strtr($link_ebene1_neu[$a], array(' ' => '_', 'ä' => 'ae', 'ü' => 'ue', 'ö' => 'oe'zwinkern).'html';

Gruß user-135

Orginal von http://de3.php.net/strtr
string strtr ( string str, string from, string to )

string strtr ( string str, array replace_pairs )

Diese Funktion gibt eine Kopie von str zurück, in der alle Vorkommen jedes Zeichens von from in das korrespondierende Zeichen in to umgewandelt wurde.

Haben from und to eine unterschiedliche Länge, werden die überzähligen Zeichen im jeweils längeren Parameter ignoriert.

das trifft bei deinem code zu

Wenn ich from und to angegeben hätte zwinkern
Ich habe aber "array replace_pairs" angegeben, daher triffts nicht zu.
Gruß

user-342
03.08.2006 20:00

Danke vielmals! Ich habe nun die strstr Lösung genommen. Es funktioniert wunderbar!

Danke nochmals!

w4p