2 Funktionen, eine Variable und alles in einem Echo

Guten Morgen,

ich habe bei mir ein Skript für eine Breadcrumb-Navigation eingebaut und passe es etwas für mich an. Dabei wird zur Anzeige der Dateiname benutzt. Aber da manche Dateinamen Unterstriche enthalten, würde ich diese gerne durch Leerzeichen ersetzen. Deshalb meine Frage:
Wie kann man bei PHP Unterstriche “_” durch Leerzeichen " " ersetzen?

Anscheinen soll es mit folgender Funktion gehen. Aber wo und wie muss ich sie im Code einbauen?

breadcrumb.php

<?php $an="Du befindest dich hier: "; $home="http://www.elpixo.de/"; $pie=explode("/","$_SERVER[PHP_SELF]"); $tr=" > "; $b=count($pie); echo $an."<a href=\"".$home."\">Startseite</a>".$tr; for($a=1;$a<$b-1;$a++){ $ta=$ta.$pie[$a]."/"; echo "<a href=\"".$home.$ta."\">".ucfirst($pie[$a])."</a>".$tr;} $file=explode('.',ucfirst($pie[$b-1])); echo "<b>".$file[0]."</b>"; ?>

Wo - an einer sinnvollen Stelle im Code, so dass die Ersetzung vor der Ausgabe passiert.

Wie - so dass die Ersetzung mit dem Inhalt der Variablen stattfindet, den du umgewandelt haben möchtest.

Wo - an einer sinnvollen Stelle im Code, so dass die Ersetzung vor der Ausgabe passiert.

Wie - so dass die Ersetzung mit dem Inhalt der Variablen stattfindet, den du umgewandelt haben möchtest.[/quote]
Und genau da liegt mein Problem. Denn ich habe es bereits an verschiedenen Stellen ohne Erfolg ausprobiert. Vielleicht habe ich auch die falsche Funktion benutzt und/oder die falsche Variable.

Wo liegt denn nun mein Fehler?

derzeitiger Stand:

<?php $an="Du befindest dich hier: "; $home="http://www.elpixo.de/"; $pie=explode("/","$_SERVER[PHP_SELF]"); $tr=" > "; $b=count($pie); $file=strtr($file, '_', ' '); echo $an."<a href=\"".$home."\">Startseite</a>".$tr; for($a=1;$a<$b-1;$a++){ $ta=$ta.$pie[$a]."/"; echo "<a href=\"".$home.$ta."\">".ucfirst($pie[$a])."</a>".$tr;} $file=explode('.',ucfirst($pie[$b-1])); echo "<b>".$file[0]."</b>"; ?>

Nach weiteren Recherchen und Versuchen hat es mit folgendem Code funktioniert:

<?php $an="Du befindest dich hier: "; $home="http://www.elpixo.de/"; $pie=explode("/","$_SERVER[PHP_SELF]"); $tr=" > "; $b=count($pie); $pie = str_replace( "_", " ", $pie ); $pie = str_replace( "ae", "ä", $pie ); $pie = str_replace( "oe", "ö", $pie ); $pie = str_replace( "ue", "ü", $pie ); $pie = str_replace( "wer steckt dahinter", "Wer steckt dahinter?", $pie ); echo $an."<a href=\"".$home."\">Startseite</a>".$tr; for($a=1;$a<$b-1;$a++){ $ta=$ta.$pie[$a]."/"; echo "<a href=\"".$home.$ta."\">".ucfirst($pie[$a])."</a>".$tr;} $file=explode('.',ucfirst($pie[$b-1])); echo "<b>".$file[0]."</b>"; ?>

Dir ist sicher klar, daß die Ersetzungen lustige Resultate liefern
können, z.B. für Oboe, Laertes, Quentchen ;o)

[quote=“hoffmann”]Dir ist sicher klar, daß die Ersetzungen lustige Resultate liefern
können, z.B. für Oboe, Laertes, Quentchen ;o)[/quote]
Danke für den Hinweis. Aber Wörter dieser Art finden bei meiner Website keine Verwendung. Deshalb sehe ich da momentan kein großes Problem. Eine kleine Diskrepanz gab es bei o.g. Code, welche aber bereits korrigiert wurde.

Wie du meinst, wenn du sicher bist, daß da niemals Querelen
oder Querulanten auftauchen oder sonst etwas quer geht …
Sonst wirst du das irgendwann noch bereuen, beziehungsweise
dann berün, daß da was qür gelaufen ist ;o)
Auch das Diskutieren des letzten Lottoergebnisses oder eben
Lottörgebnisses fällt dann ja auch flach…

Bei Nutzereingaben sollte man sowas wohl eher nicht machen,
vielleicht hat doch jemand den Spitznamen Laertes oder heißt
Hoecker und nicht Höcker etc ;o) Wenn man das nicht alles selber
geschrieben hat, ist kaum zu überblicken, welche Wörter
verwendet werden. Und wenn man es selber geschrieben hat,
täten ein einmaliges Ersetzen mit manueller Kontrolle ja
reichen.

Solche Dramen habe ich vor Jahren auch schon mit alten Texten
gehabt.

[quote=“hoffmann”]Wie du meinst, wenn du sicher bist, daß da niemals Querelen
oder Querulanten auftauchen oder sonst etwas quer geht …
Sonst wirst du das irgendwann noch bereuen, beziehungsweise
dann berün, daß da was qür gelaufen ist ;o)
Auch das Diskutieren des letzten Lottoergebnisses oder eben
Lottörgebnisses fällt dann ja auch flach…

Bei Nutzereingaben sollte man sowas wohl eher nicht machen,
vielleicht hat doch jemand den Spitznamen Laertes oder heißt
Hoecker und nicht Höcker etc ;o) Wenn man das nicht alles selber
geschrieben hat, ist kaum zu überblicken, welche Wörter
verwendet werden. Und wenn man es selber geschrieben hat,
täten ein einmaliges Ersetzen mit manueller Kontrolle ja
reichen.

Solche Dramen habe ich vor Jahren auch schon mit alten Texten
gehabt.[/quote]

Danke. Dass ist ja auch ein berechtigter Einwand von dir. Aber da meine Seite noch recht statisch ist und ich somit die Dateinamen auch selbst bestimmen kann, wird es da (momentan) keine Probleme geben. Jedoch habe ich ein anderes Problem.

Ich will zwei Funktionen auf eine Echo-Ausgabe anwenden. Wie muss der PHP-Code hierfür aufgebaut sein?

Das

echo "<a href=\"".$home.$ta."\">".ucfirst($pie[$a])."</a>".$tr; soll mit dem $pie = str_replace( "_", " ", $pie ); kombiniert werden.

Die Zeichenersetzung soll sich also nur auf die Ausgabe beziehen und nicht auf den Linkaufbau, da dieser sonst nicht mehr funktioniert.

Nein, willst du nicht.

Du willst zwei Funktionen nacheinander auf einen Wert anwenden (also die zweite auf das Ergebnis der ersten), und das endgültige Ergebnis dann per echo ausgeben.
(Und wenn dir jetzt immer noch nicht klar ist, wie das geht, dann lerne bitte endlich mal ein paar Grundlagen.)

er kann doch rein theoretisch sämtliche zeichen in einer schleife nacheinander aufrufen und per ord() die ascii ordnungszahl auslesen und überpüfen ob das ein unterstrich ist und kann dann dieses durch ein richtiges leerzeichen ersetzen.

das kann er machen,es wäre aber reinster unsinn da es funkionen gibt die das automatisch machen ,und nur prüfen ob $i="_" true rausbringt.

@asshare: du meinst $i=="_" :smiley:

Ich beu mal auf dem auf:

[quote]Du willst zwei Funktionen nacheinander auf einen Wert anwenden (also die zweite auf das Ergebnis der ersten), und das endgültige Ergebnis dann per echo ausgeben.
(Und wenn dir jetzt immer noch nicht klar ist, wie das geht, dann lerne bitte endlich mal ein paar Grundlagen.)[/quote]

Wir haben nun also eine mathematische Aufgabe, die das selbe verlangt (das ergebnis der einen Rechnung wird in der 2. weiterverwendet):
a = 3/2
b = a*4

Da wir uns nun aber keine langen Zahlen (oder brüche) merken möchten, können wir die beiden kombinieren. Wie war das nochmal?
etwa so:
b = (3/2)*4
Und etwa genau so geht es bei PHP xD

die klammern musst du nicht setzen da keine vorangregeln gebrochen wird,du hast 2 bytes verschwendet! :astonished:

Die Klammern sind nur da, um es zu verdeutlichen, schliesslich brauchst du bei einem normalen funktionsaufruf auch klammern :wink: