Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyświelaj od znaku do znaku
JPCannon
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.05.2013

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


Mam kolejny problem (IMG:style_emoticons/default/smile.gif) Mianowicie program działa tak, że analizuje znak po znaku w stringu i w zależności od niego wykonuje dodatkowe operacje. Mam jednak problem. W owym stringu są też operacje na spacjach pomiędzy wyrazami. Problem w tym, że chciałbym by jeśli dany fragment jest w cudzysłowiu to żeby wyświetlał go normalnie i olał znaki wewnątrz. np.

Normalnie: $str='Ala "baba dada"'

efekt aktualny:
Ala
baba
dada

Chciałbym by działało tak:
Ala
baba dada

Ten post edytował JPCannon 31.05.2013, 07:56:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
JPCannon
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.05.2013

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


Teraz działa poprawnie. Pozostał mi jeszcze jeden problem użycia tego kodu. Program który robię analizuje stringa znak po znaku i tak musi zostać. Robię to z użyciem zwykłego str_split. Jest jakiś sposób, żeby od wystąpienia " przerywał rozdzielanie na pojedyncze znaki, albo potraktował wszystko pomiędzy " " jako jeden element takiej tablicy? W Przypadku przerwania przy cudzysłowiu, chciałbym wznowić proces rozkładania ponownie potem. Możecie coś podpowiedzieć?

Zastanawiam się nad takim rozwiązaniem, ale nie wiem jak przetłumaczyć to na kod:

-Jeżeli trafisz w zdaniu na " to:
polecenia
-Jeżeli trafisz w zdaniu na " drugi raz to:
polecenia

Z tym, że sekwencja ta musiała by się resetować po wystąpieniu drugi raz tego znaku. Same polecenia wewnątrz to już nie problem, ale nie wiem jak kazać mu zrobić co innego gdy trafi na dany znak drugi raz, a do tego tak by potem odliczał od nowa.

Rozwiązałem już problem (IMG:style_emoticons/default/smile.gif) używając prostych ifów. Zwyczajnie nadałem dwa warunki. Jeśli program trafił na znak " to miał ustawić stan true, jeśli potem trafił na " to miał zmienić true na false i wzajemnie. Potem dodałem tylko warunek przy części rodzielającej po spacji, że warunkiem do wykonania entera jest nie tylko spacja ale też zmienna na false. Dwa ify nic poza tym (IMG:style_emoticons/default/wink.gif)

if(tablica[i]=="\"" && cudz==false){
cudz=true;
}
else if(tablica[i]=="\"" && cudz==true){
cudz=false;
}

Dziękuję wszystkim za pomoc (IMG:style_emoticons/default/wink.gif)

Ten post edytował JPCannon 31.05.2013, 15:20:18
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: 3.10.2025 - 11:58