Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaawansowane wyrażenia w preg_replace
LamaMASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Witam,
Stworzyłem sobie skrypt, który sprawdza błędy popełniane przez użytkowników na moim forum, poprawia je i zaznacza co zrobili źle (potem mogą zedytować posta i poprawić, żeby sprawdzacz już się nie rzucał). Rozwijam sprawdzacza i rozwijam i w końcu stoję w miejscu. Chciałbym pozbyć ludzi nawyku używania dwóch pytajników (debilny pomysł twórców GG zrobił z internetu syf). Przykładowo:
- Jak się nazywasz??
ma poprawić na:
- Jak się nazywasz?
gdzie pytajnik będzie na czerwono czy coś (to sobie zrobię). To jest banał - prosta regułka w str_replace. Chciałbym jednak do tego użyć preg_replace tak, aby poprawiał tylko dwa wykrzykniki, a jeżeli jest ich więcej to zostawił w spokoju. Np.:
- Jak się nazywasz??
na:
- Jak się nazywasz?
a:
- Co ty gadasz?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
zostawiał jak jest.
Niestety w powyższym przykładzie zamienia po dwa pytajniki po kolei. Wymyśliłem tak, żeby zamieniał tylko pytajniki ze spacją na końcu - było OK, ale nie zawsze user stawia spację po pytaniu, dlatego to też się nie sprawdza.

Druga rzecz - chciałbym dzięki preg_replace ustawić wstawianie przecinków przed "że" automatycznie. Przykład:
- Myślę że blablabla
zamienia na:
- Myślę, że blablabla
Też niby proste:
preg_replace("#(*.?)że(*.?)#si", '\\1, że \\2' ...
No dobra, ale wtedy jak user już wstawił przecinek:
- Myślę, że blablabla
to w wyniku mam:
- Myślę,, że blablabla

Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


/[^!]([!]{2})[^!]/
powinno zlapac dwa wykrzykniki a wokol nich po jednym znaku nie bedacym wykrzyknmikiem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 22:31