Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php] wyrażenia regularne

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php] wyrażenia regularne

Post 22.02.2012, 01:12:46

Witam,

Chcę zrobić prostą funkcję, która sprawdza, czy w adresie w wyszczególnionym miejscu widnieje słowo "abc", jeśli zamiast "abc" jest jakiekolwiek inne, np. "def", ma ono przerobić się na "abc".

Kod: Zaznacz cały
<?
if(ereg('/'.$_GET['zmienna'].',(!abc),'.$_GET['zmienna'].',adres.html', $link)){
// nie wiem, jak zapisać, że w miejscu "(!abc)" może widnieć wyłącznie fraza "abc", bo w przeciwnym razie nastąpi konwersja

$link = str_replace('??', 'abc', $link);
// jeśli coś takiego nastąpi, należy taką frazę zamienić na "abc", w miejsce dwóch pytajników też nie wiem, co wpisać

}
?>


czytałem artykuły o wyrażeniach regularnych, ale przedstawiane przykłady nie wystarczyły mi, aby to napisać
bardzo proszę nie polecać mi nazw funkcji - znam je, ale nie potrafię zastosować w tym przypadku, a to zapewne drobnostka, która komuś zajmie parę chwil
marcinek37
Posty: 79
Dołączył(a): 08.08.2008

Re: [php] wyrażenia regularne

Post 22.02.2012, 09:24:02

czy w adresie
w całym adresie, czy tylko w $_GET['zmienna']? Skąd mam wiedzieć od którego momentu zaczyna się to wyróżnione miejsce? Musisz dokładniej opisać swój problem albo schemat swojego adresu. Na podstawie tych niedokładnych informacji nie jestem w stanie zapisać wyrażenia.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19571
Dołączył(a): 14.04.2002

Re: [php] wyrażenia regularne

Post 22.02.2012, 11:52:11

adres znajduje się w zmiennej $link i może przybrać taką formę:
/nazwa-artykulu,abc,10,adres.html

i to "abc" jest pewną informacją dla systemu, ale w systemie w wielu miejscach mam porobione stare linki, gdzie zamiast "abc" są inne wartości i robi się bałagan

chcę, aby w zmiennej $link zawsze było to "abc", a jeśli nie ma, niech włącza się mini konwerter - schemat dałem powyżej
marcinek37
Posty: 79
Dołączył(a): 08.08.2008

Re: [php] wyrażenia regularne

Post 22.02.2012, 14:34:29

Coś takiego?

Kod: Zaznacz cały
function fix_url($m) {
    return $m[1] . 'abc' . $m[2];
}
preg_replace_callback('#^([^,]+,)[^,]+(,.+)$#', 'fix_url', '/nazwa-artykulu,loremipsum,10,adres.html');

gdzie 'abc' w funkcji fix_url jest tym, co ma się pojawić w adresie.
Wywołanie z tym wyrażeniem zastąpi wszystko pomiędzy pierwszym i drugim przecinkiem tym co wstawisz w funkcji fix_url. Gdybyś potrzebował "dokładniejszego" wyrażenia, to daj znać z wyjaśnieniami dlaczego.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19571
Dołączył(a): 14.04.2002

Re: [php] wyrażenia regularne

Post 22.02.2012, 16:49:06

rewelacyjny kod!
powiedz, jeśli możesz, gdzie można znaleźć najlepszy kurs działania na wyrażeniach regularnych - ale w języku polskim ;)
marcinek37
Posty: 79
Dołączył(a): 08.08.2008


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot], Google [Bot] i 6 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50331 zarejestrowanych użytkowników.
Najnowszy użytkownik: AgencjaCopywriterska


Nasi użytkownicy napisali:

  • 935475 wiadomości
  • w 246488 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)