Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ograniczenie w wyrażeniu regularnym
Forum PHP.pl > Forum > PHP
100cm
Witam. Borykam się dziś z problemem dotyczącym wyrażeń regularnych. Dokładniej chodzi mi o pewnego rodzaju "ogranicznik", który spowoduje przejęcie tylko jednego elementu. Może dokładniej to zobrazuję opisując na pewnym przykładzie:
chciałbym w tym zdaniu wykorzystać tylko słowo "kot", natomiast każde inne słowo zawierające "przedłużenie" ostatniej litery opuścić i nic z nim nie robić.
Kod
To ja, kot Ali. Kott Ali jest fajny.

Do tej pory udało mi się uzyskać jedynie efekt przy ^ $, ale to kiepskie rozwiązanie gdyż wtedy ciąg znaków musi być na końcu lub na początku linii. Z góry dziękuję za rady.
soszin
Możesz użyć przed i po słowie kot spacji czyli \s i wtedy wyszukuje tylko słowa kot.

  1. $param = 'To ja, Ali. Kott Ali kottt kot jest fajny.';
  2. $pattern = "/\skot\s/";
  3. preg_match($pattern, $param, $matches);
  4. print_r($matches);
100cm
Wszystko działa jak należy, ale gdy nie postawimy spacji ani na początku, ani na końcu ciągu znaków to podany tekst się nie zmienia. Czy posiadasz jeszcze jakiś pomysł? Próbowałem
Kod
preg_replace("/kot{2}/", 'zamiana', $string);

i wszystko super działa jeżeli posiadamy dwa lub więcej "t" na końcu stringu, ale jak to ograniczyć do jednego?

@kolega niżej
Świetna robota, nie wierzę że opiera się to na tak prostym zapisie... Działa jak trzeba, temat uważam za zamknięty i dozgonnie dziękuję.
!*!
Cytat
/\bkot\b/
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.