Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak usunąć znaki specjalne z ciągu
Forum PHP.pl > Forum > PHP
Maxximilian
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.
matid
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ć.
Maxximilian
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() ?
Spirit86
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. ?>
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.