Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][wyrażenia regularne] Konwersacja tekstu do adresu URL
Forum PHP.pl > Forum > Przedszkole
kilas88
Witam.

Chciałbym stworzyć skrypt, który automatycznie tworzyłby dla mnie adresy URL dla nowych stron. Tak więc ktoś dodaje nowy artykuł, po czym chciałbym bezpośrednio do bazy zapisać 'przyjazny adres'.

Przykład tytułu strony:
Jak stworzyć takie oto wyrażenie regularne?

Przekonwertowany adres URL, który chciałbym dodać do bazy danych:
jak-stworzyc-takie-oto-wyrazenie-regularne

Chciałbym więc, by funkcja ta wywalała polskie znaki, podwójne spacje, znaki specjalne, itp itd.

Kombinowałem trochę i wymyśliłem następujący kod:

  1. <?php
  2. $url_title = strtolower(stripslashes(trim($url_title)));
  3.  
  4. $polish_chars = array('ą'=>'a', 'ˇ'=>'a', 'ę'=>'e', 'Ę'=>'e', 'ś'=>'s', 'Ś'=>'s', 'Ľ'=>'z', 'Ź'=>'z','ż'=>'Ż', 'Ż'=>'z', 'ń'=>'n', 'Ń'=>'n', 'ó'=>'o', 'Ó'=>'o', 'ł'=>'l', 'Ł'=>'l');
  5.  
  6. $url_title = strtr($url_title, $polish_chars);
  7.  
  8. $url_title = preg_replace('/[^a-z0-940.-_]/i', "", $url_title);
  9.  
  10. $url_title = preg_replace( ' +', ' ', $url_title);
  11.  
  12. $url_title = str_replace(" ", "-", $url_title);
  13. ?>

Coś jednak wydaje mi się, że zbyt dużo tu nakombinowałem i dałoby radę znaleźć lepsze rozwiazanie.
Prosiłbym o pomoc kogoś bardziej doświadczonego w wyrażeniach regularnych.
cbagov
No troche napisales. STRTR mozesz uzyc w prostszy sposob:

$_string = strtr( $_string, "ĄŻŚŹĘĆŃÓŁążśźęćńół", "AZSZECNOLazszecnol" );

Zmiane jednego znaku rob za poca str_replace a preg_replace uzywaj do wyrazen skomplikowanych lub uciazliwych.

I łącznie masz komplet materialow aby przerobic to w zgrabna funkcje:

function _strToURL ($_string) {}
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.