Skocz do zawartości

[php] wyrażenia regularne


tanatos

Rekomendowane odpowiedzi

Problem - chce napisać funkcje, która będzie podmieniąc daną fraze na link, jednak problem jest taki, żeby nie podmieniać danej frazy jeśli jest ona już linkiem.

Dla przykładu najpierw chcemy podmienić "piłki lekarskie", a potem "piłki".

dla fraz "piłki lekarskie" zrobi się link, chciałbym aby przy drugim wywołaniu tej finkcji nie robił się kolejny link dla "piłki".

wyrażenie, które napisałem ma taką postać

     $new = preg_replace('/[^>]('.$name.')[^<\/a>]/i', '<a href="'.$link.'" title="'.$name.'">$1</a>', $old); 

Zabezpiecza ono przed tym, aby dra razy nie podmienić tego samego linka, ale nie przed tym, sytuacją którą napisałem powyżej. Czyli funkcja nie powinna robić linka z podanej frazy, jeśli na początku tej frazy jest ">" lub na końcu tej frazy jest "</a>"

Innymi słowy warunek działa teraz tak "JEŚLI" [^>] "I" ('.$name.') "I" [^<\/a>]

A powinien działać tak mniej więcej tak "JEŚLI" [^>] (na początku) LUB [^<\/a>] (na końcu) "I" ('.$name.')

Dodatkowe pytanie, czy są klasy, funkcje które służą do do manipulowania treścią w podobny sposób?

Odnośnik do komentarza
Udostępnij na innych stronach

Wygląda na to, że działa.

Napiszę jak ja to rozumiem:

1. [^>] - mówimy o tym, że wyrażnie nie może rozpoczynać się ">"

i

2. $name - wyrażenie musi zawierać tą frazę

i

3. (?![^<]*<\/a>) - po "$name" nie może być "</a>", które jest poprzedzone, czymś co nie zawiera "<" .

"[^>]' jest zbędne i wystarczy wyrażenie "/$name(?![^<]*<\/a>/i które będzie działać chyba tak samo.

Mam tylko pytanie co znaczy zapis "?!"

Odnośnik do komentarza
Udostępnij na innych stronach

"[^>]' jest zbędne i wystarczy wyrażenie "/$name(?![^<]*<\/a>/i które będzie działać chyba tak samo.
Chyba jest tak jak piszesz.
Mam tylko pytanie co znaczy zapis "?!"
https://www.egrafik.pl/kurs-regex-wyrazenia-regularne/

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności