Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
Micchaleq
Witam serdecznie,

mam pewien problem, otóż chciałbym zrobić sobie skrypt zmieniający jakieś wyrazy/frazy w tekście, ale do tego potrzebuje kilka warunków:
- tekst musi mieć przed sobą spację czyli teoretycznie \s
- posiadać konkretny tekst np "kot"
- za tekstem ma wystąpić znak spacji, przecinka lub kropki ( tutaj nie wiem jak miałby wyglądać warunek )

W każdym bądź razie taki skrypt nie działa:
  1. $szuk = '/^\s + kot$/';
  2. $a = "ala ma kota , kot ma jagody";
  3. echo(''.$a.'<br /><hr />');
  4. $a = str_replace($szuk, '<a href="#">'.$szuk.'</a>', $a);
  5. echo(''.$a.'<br /><hr />');


Czy ktoś może podać przyczynę?
nospor
Pomijając już kwestię, że nie kumam na jakiej zasadzie stworzyłeś to wyrażenie regularne, ale od kiedy to STR_REPLACE korzysta z wyrażeń regularnych? Od tego są funkcje z rodziny PREG_
!*!
pomyliłeś funkcje z preg_replace, poza tym wyrażenie jest błędne

Cytat
/^kot\,\s$/
mmmmmmm
$szuk='/\skot[ \.,]*/';
Micchaleq
Ehhh fakt chodziło o preg_replace ( sorki za znaczącą pomyłkę )

Tylko teraz tak żaden z powyższych ciągow nie działa jak powinien zmiania się kota oraz kot a powinno zmienić się tylko kot?
Czy to możliwe?
mmmmmmm
$a='ala ma kota , kot ma jagody';
$szuk='/\skot[ \.,]+/';
echo preg_replace($szuk, 'xxx', $a).PHP_EOL;
webmaniak
Witam,
mam takie wyrażenie:
  1. /^[a-zA-Z0-9\x20\x2C\x2E\x27\x2D]*\.?$/i

Co tutaj dodać żeby jak nic nie wpiszę to nie wykrzaczało?

Czyli - nie wpiszę nic - true,
wpiszę tekst zgodnie z regułą - true
Da się to zrobić?

Nikt nie wie czy można takie coś zrobić?
Gość
Cytat(webmaniak @ 5.02.2013, 15:05:36 ) *
mam takie wyrażenie:
  1. /^[a-zA-Z0-9\x20\x2C\x2E\x27\x2D]*\.?$/i

Co tutaj dodać żeby jak nic nie wpiszę to nie wykrzaczało?


Dałeś kod w znacznikach PHP, więc rozumiem, że to kod PHP. Jak masz takie wymagania, że nie chcesz nic wpisywać i żeby się nie "wykrzaczało" (zgaduję, że chyba chodzi o błędy interpretatora PHP?), to zmień rozszerzenie tego pliku np. na .html lub jakieś inne, tak aby plik nie był wykonywany po stronie serwera

Cytat(webmaniak @ 5.02.2013, 15:05:36 ) *
Czyli - nie wpiszę nic - true,
wpiszę tekst zgodnie z regułą - true
Da się to zrobić?

Nikt nie wie czy można takie coś zrobić?


To się w końcu zdecyduj czy chcesz coś wpisywać czy nie? Na początku napisałeś, że nic nie wpiszesz. Jeżeli jednak zmienisz zdanie, to może po prostu zastosować strlen?
webmaniak
Dzięki za odpowiedź. Sprawa wygląda tak że ten kod jest faktycznie kodem php. Mi chodzi o to że mam walidację i sprawdzenie czy input nie jest pusty, a jeśli jest to nie chcę sprawdzać tego regexa bo po co mam wyświetlać komunikat że niedozwolony znak skoro inny komunikat powie że pusty input. a to wyrażenie bardziej potrzebne mi do jquery bo tam to trochę głupio wygląda jak są niepotrzebnie dwa komunikaty. W php się przyda przy wyłączonym js. A z php łatwiej mi zmienić wyrażenie na js.
Nie wiem czy dobrze się wyraziłem :-) W każdym razie problem rozwiązałem, trzeba dodać odpowiednią regułkę, jest oba taka sama dla php i js. Podeślę kod jutro bo dziś nie mam do niego dostępu.

Miało być jutro, no ale lepiej późno niż ... później:
Kod
/^[a-zA-Z0-9\x20\x2C\x2E\x27\x2D]*\.?$|^$/i

Takie wyrażenie zadziała tak jak chciałem smile.gif Oczywiście to nie jest jedyne rozwiązanie, ale wybrałem tą wersję.
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.