Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyrazenia regularne, preg_replace
waXain
post 13.12.2004, 10:07:43
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 13.03.2004

Ostrzeżenie: (10%)
X----


Witam
Problemik jest taki...
mam zapis:

  1. <?php
  2.  
  3. $regex = &#092;"{(s|b)(\".strtolower($tabSkroty[$a]['skrot']).\")(s|$|.|;|-|,)}\";
  4.  
  5. if (preg_match($regex, strtolower($tabForm['trescText'])))
  6. {
  7.  
  8. $regex2 = &#092;"{(\".$tabSkroty[$a]['skrot'].\")}\";
  9.  
  10. $tabForm['trescText'] = preg_replace($regex2, $tabSkroty[$a]['skrot'] , $tabForm['trescText']);
  11. }
  12.  
  13. ?>


i dziala...Jednak jak zrobic by reszta tekstu [oprocz tych z tablicy skrotow] byla z malych liter+duza litera na poczatku zdania. Siedze nad tym od dluzszego czasu i nie potrafie znalezc rozwiazania [tym bardziej ze cala funkcja jest bardziej skomplikowana: szukanie wyrazow niedozwolonych, blokowanie, kropkowanie itp]. Caly tekst juz mam przeformatowany brakuje mi jedynie odpowiedzi na to (pewnie proste) pytanie smile.gif


pozdrawiam i z gory dziekuje za wszelka pomoc


[zmoderowane]
FiDO: prosze uzywac BBCode!!
Go to the top of the page
+Quote Post
lukass
post 13.12.2004, 22:48:30
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 20.03.2002

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


Cytat(waXain @ 2004-12-13 10:07:43)
Witam
Problemik jest taki...
mam zapis:

  1. <?php
  2.  
  3. $regex = &#092;"{(s|b)(\".strtolower($tabSkroty[$a]['skrot']).\")(s|$|.|;|-|,)}\";  
  4.       
  5.       if (preg_match($regex, strtolower($tabForm['trescText'])))
  6.       {
  7.         
  8.         $regex2 = &#092;"{(\".$tabSkroty[$a]['skrot'].\")}\";
  9.         
  10.         $tabForm['trescText'] = preg_replace($regex2, $tabSkroty[$a]['skrot'] , $tabForm['trescText']);
  11.       }
  12.  
  13. ?>


i dziala...Jednak jak zrobic by reszta tekstu [oprocz tych z tablicy skrotow] byla z malych liter+duza litera na poczatku zdania. Siedze nad tym od dluzszego czasu i nie potrafie znalezc rozwiazania [tym bardziej ze cala funkcja jest bardziej skomplikowana: szukanie wyrazow niedozwolonych, blokowanie, kropkowanie itp]. Caly tekst juz mam przeformatowany brakuje mi jedynie odpowiedzi na to (pewnie proste) pytanie smile.gif


pozdrawiam i z gory dziekuje za wszelka pomoc


[zmoderowane]
FiDO: prosze uzywac BBCode!!

Czesc wladziu smile.gif,

nie rozumiem zbytnio kodu tongue.gif, ale jesli chodzi o zamiane znakow na duze na poczatku zdania wydaje mi sie ze wystarczy dodac wyrazenie ktore zamienialoby pierwsza litere ktora znajduje sie po ". " (kropka i spacja) oraz dodac aby pierwszy znak w tekscie (zakladajac ze jest to pierwsze zdanie) zamienial na duza litere (^).
Go to the top of the page
+Quote Post
waXain
post 14.12.2004, 08:56:57
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 13.03.2004

Ostrzeżenie: (10%)
X----


no tak z tym raczej wiekszego problemu nie ma, jednak problem sie komplikuje przy chocby takim zdaniu: Ala ma DUZEGO kota i malego PSA.

W zdaniu tym slowo DUZEGO musi zostac z duzych liter, gdyz zostalo dodane do tabeli slow pisanych z duzych liter (mniejsza o to, po co to jest...) natomiast slowo PSA nie jest w tej tabeli i musi zostac zapisane z malych liter. Tak wiec zdanie docelowe powinno wygladac tak: Ala ma DUZEGO kota i malego psa.

Problem z zamiana pierwszego znaku z kazdego nowo ropoczetego zdania (po kropce) nie jest tak naprawde problemem. Problemem jest jak zrobic, by cale zdanie bylo przeformatowane na male litery (oprocz slow z tabeli slow), a pierwsza litera kazdego zdania byla pisana z duzej? smile.gif
Go to the top of the page
+Quote Post
lukass
post 14.12.2004, 20:25:56
Post #4





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 20.03.2002

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


Cytat(waXain @ 2004-12-14 08:56:57)
no tak z tym raczej wiekszego problemu nie ma, jednak problem sie komplikuje przy chocby takim zdaniu: Ala ma DUZEGO kota i malego PSA.

W zdaniu tym slowo DUZEGO musi zostac z duzych liter, gdyz zostalo dodane do tabeli slow pisanych z duzych liter (mniejsza o to, po co to jest...) natomiast slowo PSA nie jest w tej tabeli i musi zostac zapisane z malych liter. Tak wiec zdanie docelowe powinno wygladac tak: Ala ma DUZEGO kota i malego psa.

Problem z zamiana pierwszego znaku z kazdego nowo ropoczetego zdania (po kropce) nie jest tak naprawde problemem. Problemem jest jak zrobic, by cale zdanie bylo przeformatowane na male litery (oprocz slow z tabeli slow), a pierwsza litera kazdego zdania byla pisana z duzej? smile.gif

Musisz rozbic tekst na slowa pojedyncze (explode wg: " ") i sprawdzac kazde z osobna czy jest w tablicy i jesli nie ma to zamieniac na male...
Go to the top of the page
+Quote Post
waXain
post 15.12.2004, 09:15:43
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 13.03.2004

Ostrzeżenie: (10%)
X----


Dzieki smile.gif
Myslalem o rozwiazaniu o ktorym piszesz, jednak wydaje mi sie ze byloby ono dosc wolne. Poki co wpadlem na troche inny pomysl, by przy slowach z tablicy slow wstawiac jakis unikalny znacznik [np. |], a pozniej przy kolejnym sprawdzaniu wyrazeniem regularnym zamienic wszystkie wyrazy na male wg. wyrazenia [w ktorym nie bedzie |]. Mysle ze zadziala smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:00