Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4668 > unrolled thread
| Started by | Daniel Walz <daniel.walz@gmx.de> |
|---|---|
| First post | 2021-02-02 17:32 +0100 |
| Last post | 2021-02-03 09:30 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to de.comp.lang.php
URL aus Benutzereingabe erzeugen Daniel Walz <daniel.walz@gmx.de> - 2021-02-02 17:32 +0100
Re: URL aus Benutzereingabe erzeugen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2021-02-02 18:58 +0000
Re: URL aus Benutzereingabe erzeugen Daniel Walz <daniel.walz@gmx.de> - 2021-02-03 09:30 +0100
| From | Daniel Walz <daniel.walz@gmx.de> |
|---|---|
| Date | 2021-02-02 17:32 +0100 |
| Subject | URL aus Benutzereingabe erzeugen |
| Message-ID | <i7td4nF7nloU1@mid.individual.net> |
Hallo,
ich programmiere derzeit meine zimelich in die Jahre gekommene Seite
www.drarbeit.de neu.
Zukünftig soll der Titel der Stellenangebote Teil der URL sein. Dazu
muss ich ihn natürlich anpassen. Leider habe ich keine entsprechende
Funktion gefunden, die ich als Vorbild hätte nehmen können, und mir
jetzt auf die schnelle folgende gebastelt:
function makeURL(string $s): string
{
// alles in Kleinbuchstaben
$url = mb_strtolower($s);
// Umlaute und ß ersetzen
$url = str_replace(['ä', 'ö', 'ü', 'ß'], ['ae', 'oe',
'ue', 'ss'], $url);
// Sonderzeichen ersetzen durch Minus
$url = preg_replace("/[^a-z0-9]/", "-", $url);
// mehrfache Minus ersetzen
$url = preg_replace("/-+/", "-", $url);
// Minus am Anfang und Ende ersetzen
$url = trim($url, '-');
return $url;
}
Das funktioniert auch soweit, ich habe es mit realen Eingaben hier mal
getestet:
https://www.yourmed.de/test.php
Was mich sehr irritiert ist, dass nach dem ersten preg-replace jetzt
alle " durch "quot" und & durch "amp" ersetzt sind anstatt durch ein
einfaches Minus. Wie kommt das zustande und wie kann ich es ändern?
Gruß
Daniel
[toc] | [next] | [standalone]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2021-02-02 18:58 +0000 |
| Message-ID | <1t60199f15i7a2en3e8%sfroehli@Froehlich.Priv.at> |
| In reply to | #4668 |
On Tue, 02 Feb 2021 17:32:23 Daniel Walz wrote:
> function makeURL(string $s): string
> {
> // alles in Kleinbuchstaben
> $url = mb_strtolower($s);
> // Umlaute und ß ersetzen
> $url = str_replace(['ä', 'ö', 'ü', 'ß'], ['ae', 'oe',
> 'ue', 'ss'], $url);
> // Sonderzeichen ersetzen durch Minus
> $url = preg_replace("/[^a-z0-9]/", "-", $url);
> // mehrfache Minus ersetzen
> $url = preg_replace("/-+/", "-", $url);
> // Minus am Anfang und Ende ersetzen
> $url = trim($url, '-');
> return $url;
> }
> Was mich sehr irritiert ist, dass nach dem ersten preg-replace
> jetzt alle " durch "quot" und & durch "amp" ersetzt sind anstatt
> durch ein einfaches Minus. Wie kommt das zustande [...]
Wie auch immer test.php gestaltet ist, das passiert bei der Ausgabe,
nicht in der Funktion. Da ist wohl irgendwo ein htmlspecialchars()
zu viel im Spiel.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Stefan - welch toter Gedanke.
(Sloganizer)
[toc] | [prev] | [next] | [standalone]
| From | Daniel Walz <daniel.walz@gmx.de> |
|---|---|
| Date | 2021-02-03 09:30 +0100 |
| Message-ID | <i7v59eFi1rhU1@mid.individual.net> |
| In reply to | #4669 |
Stefan Froehlich schrieb am 02.02.2021 um 19:58:
> On Tue, 02 Feb 2021 17:32:23 Daniel Walz wrote:
>> function makeURL(string $s): string
>> {
>> // alles in Kleinbuchstaben
>> $url = mb_strtolower($s);
>> // Umlaute und ß ersetzen
>> $url = str_replace(['ä', 'ö', 'ü', 'ß'], ['ae', 'oe',
>> 'ue', 'ss'], $url);
>> // Sonderzeichen ersetzen durch Minus
>> $url = preg_replace("/[^a-z0-9]/", "-", $url);
>> // mehrfache Minus ersetzen
>> $url = preg_replace("/-+/", "-", $url);
>> // Minus am Anfang und Ende ersetzen
>> $url = trim($url, '-');
>> return $url;
>> }
>
>> Was mich sehr irritiert ist, dass nach dem ersten preg-replace
>> jetzt alle " durch "quot" und & durch "amp" ersetzt sind anstatt
>> durch ein einfaches Minus. Wie kommt das zustande [...]
>
> Wie auch immer test.php gestaltet ist, das passiert bei der Ausgabe,
> nicht in der Funktion. Da ist wohl irgendwo ein htmlspecialchars()
> zu viel im Spiel.
Danke!!! Das ist tatsächlich das Problem gewesen.
Ich hatte vor Urzeiten (also 2002, als ich die Seite programmiert habe)
die Daten schon html-kodiert in die Datenbank gespeichert (weil ich
damals dachte, das sei effizienter).
Ein Blick in den Seitenquelltext hätte es mir gezeigt...
Gruß
Daniel
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.lang.php
csiph-web