Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja zamieniająca ciąg na małe litery i usuwająca znaki
Forum PHP.pl > Forum > Przedszkole
czernin
Witam,

Mam taki kod:

  1. function linki($text) {
  2. $spacja = Array(" " => "-");
  3. $text = strtolower($text);
  4. return strtr($text, $spacja);
  5. return $text = preg_replace('/[\W_ążźćńśłóę]/i', '', $text);
  6. }


Podany wyżej kod zamieni ciąg:

Kod
PrZykŁaDowY CiĄg 1543 ."\)(*&^%[


Na:

Kod
przykŁadowy-ciĄg-1543-.\"\\)(*&^%[


Jak przekształcić funkcję, aby zamieniła ciąg na:

Kod
przykadowy-cig-1543-


Tzn aby znaki typu !@#$%^ i polskie znaki były usuwane z ciągu?
sowiq
Masz złe podejście. Zamiast robić listę rzeczy (znaków) niedozwolonych, które będziesz usuwał, powinieneś zrobić listę rzeczy (znaków) dozwolonych i usuwać wszystko inne.

  1. $text = str_replace(' ', '-', $text);
  2. $text = strtolower(' ', '-', $text);
  3. $text = preg_replace('/[^a-z0-9]/', '', $text);
  4. return $text;


[edit]
A czemu nie chcesz zamienić np.
PrZykŁaDowY CiĄg 1543 ."\)(*&^%[
na
przykladowy-ciag-1543

Polecam tą zajebistą klasę: https://github.com/l3pp4rd/DoctrineExtensio...til/Urlizer.php Oprócz polskich znaków, genialnie radzi sobie z innymi 'krzaczkami', np. tureckimi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.