Forum Gry Hobby Sprzęt Rozmawiamy Archiwum Regulamin

Forum: Ktoś z was ogarnia PHPa?

10.06.2017 18:19
dexapini9
1
dexapini9
116
veritas odium parit

Ktoś z was ogarnia PHPa?

Mam problem z pewną rzeczą, którą chcę zamieścić na stronie. Jeśli ktoś zna PHP na poziomie dobrym albo lepiej, to proszę o odp.

10.06.2017 18:49
2
odpowiedz
Hakim
241
Senator

Opisz pokrótce problem. Można znać PHP, ale problem może dotyczyć np. jakiejś funkcji wordpressowej, gdzie bez znajomości działania 10 innych nie będzie łatwo udzielić odpowiedzi.

10.06.2017 18:55
dexapini9
3
odpowiedz
dexapini9
116
veritas odium parit

Chciałbym napisać funkcję zliczającą powtórzenia pod rząd w jakimś słowie. Np. Aagata, czyli 2x jest litera A powtórzona pod rząd, więc zwraca odpowiednią liczbę itd.

10.06.2017 19:31
4
odpowiedz
2 odpowiedzi
Hakim
241
Senator

Nie rozumiem co oznacza "odpowiednia liczba", czyli to co ma zwracać funkcja.

Schemat postępowania, jaki ja bym zastosował: rozbijasz stringa na literki (str_split) i w pętli sprawdzasz każdą kolejną literę, czy zgadza się z poprzednią. Jeśli tak, licznik wzrasta o jeden, czy ile tam jest potrzebne.

10.06.2017 19:45
nagytow
4.1
nagytow
146
Firestarter

Nawet bez splita mozna, wystarczy po kolei odwolywac sie do kolejnych liter w stringu.

10.06.2017 19:47
4.2
Hakim
241
Senator

Dla naszych krzaczków zaczyna się problem przy odwołaniu do konkretnego bajtu.

10.06.2017 19:48
5
odpowiedz
zanonimizowany1222151
36
Generał

Jak znasz algorytmy, to bez problemu takie coś w każdym języku napiszesz.

10.06.2017 19:51
dexapini9
6
odpowiedz
1 odpowiedź
dexapini9
116
veritas odium parit

odpowiednia oznacza ilość powtórzeń, czyli w Aagata będzie zwrócona 1 jest powtórzenie dwóch liter a. W nazwie np. Googlee będzie wypisana dwójka, bo są dwa powtórzenia : 2x o i 2x e

10.06.2017 19:57
nagytow
6.1
nagytow
146
Firestarter

Czyli Aagata = Agaata = Aaagata = Agataaaaa = 1?

10.06.2017 20:43
dexapini9
7
odpowiedz
4 odpowiedzi
dexapini9
116
veritas odium parit

nie, on zlicza tylko po 2 litery sąsiadujące, jeśli są takie same, to wyświetla 1.

Aagata - 1
Aagaataa - 3
Ktootaam - 2

Jeśli dwie litery takie same są obok siebie, daje to wart. 1.

10.06.2017 21:08
kaczmen
7.1
kaczmen
98
GINOBILI!!!

a ile ma policzyć dla Aaagata? ma zwracać uwagę na wielkość liter?

10.06.2017 21:12
dexapini9
7.2
dexapini9
116
veritas odium parit

nie, chodzi o typ , że są dwa obok siebie, wielkość mnie nie interesuje

dla Aaagata - 1, tu chodzi raczej o takie coś, że wystarczą 2 koło siebie, nawet dla Aaaaaaagata też policzy 1 bo w 1 miejscu te powtórzenia są.

post wyedytowany przez dexapini9 2017-06-10 21:14:09
10.06.2017 21:45
kaczmen
7.3
kaczmen
98
GINOBILI!!!

http://sandbox.onlinephpfunctions.com/code/287f44b84c2488b31bde0d3996df71e6d86c7ce7

baaaaaaardzo "łopatologicznie", na pewno jest jakieś lepsze roziązanie... np preg_match?

10.06.2017 22:09
dexapini9
👍
7.4
dexapini9
116
veritas odium parit

w sumie tyle wystarczy, jakos to sobie potem przerobię... wielkie dzięki kaczmen :)

10.06.2017 22:03
8
odpowiedz
2 odpowiedzi
Hakim
241
Senator

$a = 'Aaagaataaa';
preg_match_all('#(.)\1+#ui', $a, $m);
echo count($m[0]);

post wyedytowany przez Hakim 2017-06-10 22:04:56
10.06.2017 22:23
dexapini9
8.1
dexapini9
116
veritas odium parit

a co np. gdybym chciał policzyć 3 zamiast 2?

10.06.2017 22:56
kaczmen
8.2
kaczmen
98
GINOBILI!!!

wyrażenia regularne to cholernie fajna sprawa, dla 3 lub więcej

$a = 'Aaagaataaa';
preg_match_all('#(.)\1\1+#ui', $a, $m);
echo count($m[0]);

może być też (.)\1‹2›\1*
w ‹;;›;; licznik powtórzeń złapanego w (.) znaku

edit: rzeczywiście jak napisał kolega niżej - (.)\1‹2,›

post wyedytowany przez kaczmen 2017-06-10 23:14:01
10.06.2017 22:35
Amadeusz ^^
10
odpowiedz
Amadeusz ^^
207
of the Abyss
Image

Nie znam php.

Przepisz z javy i (jedyne co to musisz wiedzieć jak zaglądać do wnętrza stringu w PHP) i powinno banglać.

edit: jak chcesz 3 pod rząd to ucinasz pętlę jeszcze bardziej (length -2) i dodajesz && tekst(i) == tekst(i+2) w ifie.

post wyedytowany przez Amadeusz ^^ 2017-06-10 22:37:58
10.06.2017 23:02
moir
11
odpowiedz
moir
42
dsky

GRYOnline.plTeam

Regex dla x powtórzeń

/(.)\1‹x,›/.

post wyedytowany przez moir 2017-06-10 23:05:03
Forum: Ktoś z was ogarnia PHPa?