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 (1 - 4)
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
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://www.php.net/manual/pl/function.urlencode.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Maxximilian
post
Post #4





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

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


Dzięki za odpowiedzi.
Z kodowania znaków funkcją urlencode() raczje nie chciałbym korzystać - dostaje się takie wstręciuchowate %.
Czy jest jakaś opcja zamiany polskich znaków na bezogonkowe odpowidniki poza serią kolejnych funkcji ereg_replace() ?
Go to the top of the page
+Quote Post
Spirit86
post
Post #5





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(Maxximilian @ 2006-04-04 12:26:48)
Dzięki za odpowiedzi.
Z kodowania znaków funkcją urlencode() raczje nie chciałbym korzystać - dostaje się takie wstręciuchowate %.
Czy jest jakaś opcja zamiany polskich znaków na bezogonkowe odpowidniki poza serią kolejnych funkcji ereg_replace() ?

jejku, ale masz problem,
tworzysz 2 tablice

  1. <?php
  2. $pl = array('ą', 'ś' ...)
  3. $lat = array('a', 's'...)
  4. str_replace($pl,$lat, ...)
  5. ?>


Ten post edytował Spirit86 4.04.2006, 15:10:11


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 17:09