Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak usunąć znaki specjalne z ciągu, właściwie jak pozostawić tylko niektóre
Maxximilian
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 16.04.2005

Ostrzeżenie: (0%)
-----


W jaki spoób wyeliminować wszelakie niechciane znaki z ciągu.
Chodzi o konwersję tytułu artykułu/strony na url (tak jak w prezentowanym na php.pl artykule) - problem w tym, że jeśli tytuł staje się url-em - to nie może zawierać masy różnych znaków innych niż podstawowe 30.
Próbowałem to robić tak:

Kod
$link = html_entity_decode($link);
$link = strip_tags($link);
$link = ereg_replace('|', '_', $title);
$link = ereg_replace('#', '_', $title);
$link = ereg_replace('@', '_', $title);
$link = ereg_replace('\', '_', $title);
$link = ereg_replace('/', '_', $title);
$link = ereg_replace('-', '_', $link);
$link = ereg_replace(' ', '_', $link);


ale chyba nie tędy droga.
Pozostaje jeszcze zamiana polskich znaków narodowych na "bezogonkowe" i generalnie eliminacja wszelakich znaków poza standartowymi 30-toma.
Więc generalnie może prostsza i szybsza byłaby jakaś funkcja - eleminująca wszystkie znaki oprócz tych 30-tu.
Czy ktoś mógłyby mi coś podpowiedzieć?
Z góry dziękuje na pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matid
post
Post #2





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Ja to robię tak:
  1. <?php
  2.  
  3. $word = "Jakiś tytuł z polskimi znakami diakrytycznymi, i ?!@#,.#!@$
  4. znakami specjalnymi?!";
  5.  echo strtolower(preg_replace('/[^A-Z^a-z^0-9]+/','_', preg_replace('/([a-z\d])([A-Z])/','\1_\2', preg_replace('/([A-Z]+)([A-Z][a-z])/','\1_\2',$word)))) 
  6. ?>


Zwraca: jaki_tytu_z_polskimi_znakami_diakrytycznymi_i_znakami_specjalnymi_

Nie zamienia wprawdzie polskich znaków na ich łacińskie odpowiedniki, ale to można dopisać.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 20:15