![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 2 Dołączył: 6.06.2008 Skąd: jesteś ? Ostrzeżenie: (0%) ![]() ![]() |
Witam. Niby to proste a nie mogę rozgryźć jak napisać funkcję która przekształca tekst w spak.
Dla tego proszę o pomoc |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Można pisać, ale po co wymyślać koło na nowo?
http://php.net/manual/pl/function.strrev.php -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 2 Dołączył: 6.06.2008 Skąd: jesteś ? Ostrzeżenie: (0%) ![]() ![]() |
Dzięki. no ok ale chciałem poznać tą funkcję bardziej. czyli na jakiej zasadzie działa. bo jeżeli się nie mylę nie każdy język programowania ma taką funkcję.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
najprościej mówiąc:
- mierzysz długość stringa - tworzysz pętlę od i = ( długość -1 ) do 0 - - wyświetlasz w pętli $tekst[$i] -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki. no ok ale chciałem poznać tą funkcję bardziej. czyli na jakiej zasadzie działa. bo jeżeli się nie mylę nie każdy język programowania ma taką funkcję.
To oczywiscie nie zadziała dla polskich znaków, ale widzę że strrev też tak nie zadziała. -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 69 Dołączył: 26.04.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
To oczywiscie nie zadziała dla polskich znaków, ale widzę że strrev też tak nie zadziała. Zadziala, jak zamiast strlen() uzyjesz mb_strlen() - http://pl.php.net/manual/pl/function.mb-strlen.php -------------------- Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
*pisane z palca. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Zadziala, jak zamiast strlen() uzyjesz mb_strlen() - http://pl.php.net/manual/pl/function.mb-strlen.php Wtedy jeszcze też nie zadziała ![]() Edit: @skowron-line Twój kod ma znikomą wartość dydaktyczną Ten post edytował flashdev 21.10.2010, 22:00:00 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@skowron-line Twój kod ma znikomą wartość dydaktyczną Wiedziałem że dupa nie będzie pasować do tematu. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Wiedziałem że dupa nie będzie pasować do tematu. Chodziło mi raczej o to, że taki kod nie pokazuje dokładnie jak to działa. Gdybyś pisał tą funkcję w c, czy asemblerze to zrobił byś to w taki sposób jak ja powyżej. Ale oczywiście dodatkowe rozwiązanie tego samego w inny sposób niczemu nie szkodzi. Tymbardziej, że w PHP może być ono nawet szybsze od zaproponowanego przeze mnie ![]() -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi raczej o to, że taki kod nie pokazuje dokładnie jak to działa. Gdybyś pisał tą funkcję w c, czy asemblerze to zrobił byś to w taki sposób jak ja powyżej. Ale oczywiście dodatkowe rozwiązanie tego samego w inny sposób niczemu nie szkodzi. Tymbardziej, że w PHP może być ono nawet szybsze od zaproponowanego przeze mnie ![]() Bez urazy ale czy w czy to jest forum.php.pl czy forum.c.pl ![]() -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zadziala, jak zamiast strlen() uzyjesz mb_strlen() - http://pl.php.net/manual/pl/function.mb-strlen.php Też nie zadziała. Polskie znaki przetrzymywane są w dwóch bitach o ile mnie pamięć nie zawodzi. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Bez urazy ale czy w czy to jest forum.php.pl czy forum.c.pl ![]() Zacznijmy od tego, że sam klepiesz cuda, bo to co napisałeś przy użyciu 3 funkcji mogłeś zrobić przy użyciu tylko jednej -> strrev. Zapoznaj się jeszcze raz z trzecim postem tego wątku, to może zrozumiesz co było celem napisania takiego kodu. Z mojej strony koniec tematu, ponieważ nie mam ochoty na takie dyskusje. -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dziala dziala, tylko trzeba w drugim argumencie podac jakiego kodowania uzywa strona. Nadal nie zadziała, ponieważ przy przenoszeniu konkretnych części ciągu: Znaki zapisane w dwóch-trzech bajtach nie zostaną poprawnie przeniesione. Co do tematu. Tekst jest po prostu inną formą zapisu tablicy liczb. Innymi słowy: Kod "ala ma kota" = { 61, 72, 61, 32, 88, 61, 32, 71, 85, 95, 61 } Tak więc by odwrócić tekst wystarczy tylko odwrócić kolejność elementów w takiej tablicy. Sposób na zrobienie tego pokazał już flashdev w 5. poście.Wszystko jest fajne, gdy pracujemy w fajnym języku (nie, PHP nie jest fajnym językiem), który wspiera Unikod natywnie. Niestety PHP domyślnie traktuje tekst jako ASCII, a praktycznie cały powstający obecnie kod jest kodowany Unikodem. Problem? ASCII to 2^8 znaków, Unikod to 2^16 znaków, tak więc istnieje mały problem z przechowywaniem zdecydowanej większości znaków Unikodu. By to rozwiązać trzeba czasami jeden znak potraktować tak jakby jako kilka: Kod "ałć" = { 61, 81, 122, 64, 188 } # PHP "ałć" = { 61, 1578, 1422 } # taka na przykład Java Teraz już problem powinien być widoczny. Spróbujmy odwrócić wyraz "żółw" Kod "żółw" = { 15, 44, 62, 212, 79, 11, 78 } # Co chcemy osiągnąć? { 78, 79, 11, 62, 212, 15, 44 } # Co osiągniemy poprzez proste odwrócenie kolejności elementów w tablicy? { 78, 11, 79, 212, 62, 44, 15 } Tak więc by odwrócić poprawnie ciąg kodowany Unikodem w PHP musimy użyć mb_strlen oraz mb_substr. PS. Numery dla poszczególnych znaków są przypadkowe. Ten post edytował Crozin 21.10.2010, 23:18:24 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Czlowieku od..fajkuj sie ode mnie i nie ukrywaj swojej niewiedzy atakujac kogos. Gamoniem jestes i tyle, bo ja tez moge napisac, ze jedyne czego nie dopisalem to funkcji mb_substr i tyle. Spojrz lepiej o czym ja pisze i nie atakuj. Bez odbioru. PS. Dlugo myslales nad odpowiedzia...zabraklo argumentow? Panie, nie masz Pan racji. Argumentów brakuje przede wszystkim Tobie w postaci działającego* kodu. Nikt Cię tutaj nie obraża więc nie widze powodów takiej agresji. *Edit Ten post edytował flashdev 22.10.2010, 21:53:55 -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Napisałem swoją wersję funkcji mb_strrev, żeby zakonczyć te spekulacje nad kodem, którego nie ma.
Niezbyt elegancko jest napisany, ale w tej chwili nie udało mi się wymyślić nic lepszego. Jeśli ktoś potrafi to zapraszam do ulepszania tego kodu, zamiast pisać puste, nie poparte argumentami słowa. -------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 69 Dołączył: 26.04.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Niezbyt elegancko jest napisany, ale w tej chwili nie udało mi się wymyślić nic lepszego. Jeśli ktoś potrafi to zapraszam do ulepszania tego kodu, zamiast pisać puste, nie poparte argumentami słowa. Haha ty zes zaszalal teraz - wszystko Ci Crozin na tacy wylozyl no to trzeba bylo zablysnac...NC. "Puste, nie poparte argumentami slowa" - to wlasnie twoj skrypt (w szczegolnosi nacisk na PUSTE) w porownaniu do tego, co napisal i wniosl do tematu Crozin. Rzucasz chlopcze wielkimi slowami, a ja podsumuje cie malymi: - na poczatku skupiles sie na obrazaniu skowron-line, bo napisal lepsza, prosta i zarazem DZIAŁAJĄCA funkcje (w przeciwienstwie do ciebie), argumentujac to tym iz w jezyku C nie dalo by sie tego tak napisac - choc autor wcale o to nie prosil. - no i na koniec korzystajac z gotowych rozwiazan, jakie dal Crozin blysnales niczym supernova, funkcja ktora uzywa niepotrzebnego array_unshift - btw. za uzycie podobnych funkcji miales pretensje do skowron-line (cytat: "Zacznijmy od tego, że sam klepiesz cuda, bo to co napisałeś przy użyciu 3 funkcji mogłeś zrobić przy użyciu tylko jednej -> strrev.", to po co uzywasz array(), array_unshift() i implode()? - brak konsekwencji w twoich skryptach i wypowiedziach. Zeby nie byc "goloslownym" i tak na oslode dla ciebie (cytat: "Argumentów brakuje przede wszystkim Tobie w postaci działającego* kodu.") - no to łykaj:
Nie umieszczalem tego kodu wczesniej, bo myslalem, ze po poscie Crozina wszystko jest juz jasne - coz...widocznie nie dla ciebie... To tyle ode mnie. Ten post edytował kapuch 23.10.2010, 01:04:13 -------------------- Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 9.07.2025 - 19:15 |