Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Przechwytywanie danych z textarea do inputów
ghastblood
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Witam,

mam textarea w którym wprowadzam statyczne dane i chciał bym nie którę przechwycić do inputa

jest to

jakaś nazwa plenty ( 1:482:6 ) (Gracz: jakaś nazwa gracza)

- Metal: 470.000
- Kryształ: 255.000
- Deuter: 140.000


dane pogróbione to dane które chciał bym umieścić w inpucie

czyli tak wklejam sobie raport do textarea klikam dalej i mam inputy w którch mam już wprowadzone te dane a jeszcze lepiej było by jak robił to ajax

żeby odrazu można było zapisać dane

Ten post edytował ghastblood 17.10.2014, 10:39:36
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Az sie prosi o wyrazenie regularne. Z czym konkretnie masz problem?
Go to the top of the page
+Quote Post
ghastblood
post
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


właśnie myślałem nad wyrażeniami regularnymi tylko ze jak okreś w preg_match() że szukaną jest metal to zwróci mi TRUE a ja potrzebuje podaną wartość
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




....
Zajrzyj do manuala i zobacz jak sie uzywa preg_match() a dowiesz sie, ze mozna pobrac znalezione informacje bez najmniejszego problemu. Trzeba jedynie przeczytac jak uzywac funkcji, z ktora sie pracuje
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


preg_match z 3 argumentami zwraca dane ze wzroca
Go to the top of the page
+Quote Post
ghastblood
post
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


siedzę nad dokumentacją korzystam z regexp online i cały czas jest coś nie tak (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




To zamiast pokazywac jezor, pokaz kod z ktorym masz problem
Go to the top of the page
+Quote Post
markonix
post
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Ja bym to zrobił za pomocą explode - linia po linii.
Oczywiście przyjmując, że skopiowany raport ma ma zawsze taki sam format (wyrażenia reg. po części też i tak tego wymagają).
Przed sprawdzaniem jeszcze trim, aby pozbyć się wszystkiego przed nazwą planety i po ilości deuteru.

Ten post edytował markonix 17.10.2014, 11:15:11
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@markonix za duzo bezsensownej zabawy. Jedno proste wyrazenie i po sprawie. Poza tym takie cos latwo zmodyfikowac gdy pojawią sie jakies zmiany
Go to the top of the page
+Quote Post
ghastblood
post
Post #10





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


  1. preg_match('/[0-9]+:[0-9]+:[0-9]+/', '( 1:482:6 ) (Gracz: ponurak) ', $matches);


zwraca mi 1:482:6 czyli w sumie działa teraz tylko nie wiem wyszukać nazwę gracza

Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Podales tylko regulke na pierwszy ktest. Podaj wszystkie w tym wyrazeniu, to znajdzie ci wszystko

  1. $te = 'jakaś nazwa plenty ( 1:482:6 ) (Gracz: jakaś nazwa gracza)
  2.  
  3. - Metal: 470.000
  4. - Kryształ: 255.000
  5. - Deuter: 140.000';
  6. preg_match("/^.*? \( (\d+:\d+:\d+) \) \(Gracz: (.*?)\).*?$/si",$te, $matches);
  7. print_r($matches);
  8.  

Jako praca domowa dopisz do tego metal i reszte
Go to the top of the page
+Quote Post
ghastblood
post
Post #12





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


aa to tak można zrobić a możesz mi podać gdzie znajdę dokumentacje odnośnie wzorów bo przeglądam php.net i nie mogę na to trafić a w sumie to z twojego patternu nic nie rozumiem
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Pierwszy lepszy w necie
http://www.programuj.com/artykuly/www/regularne.php
http://pl.wikibooks.org/wiki/PHP/Podstawy_...żeń_regularnych
http://wieluk.republika.pl/s/wzorce.html
Go to the top of the page
+Quote Post
ghastblood
post
Post #14





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


nie wiem czy dobrze to rozgryzłem

/ <- Ogranicznik
^ <- Początek Ciągu
. <- Dowolny Znak
* <- 0 lub Więcej
? <- znak może występować 0 lub 1 raz
\( <- "("

(
\d+: <- dowolna cyfra występująca co najmniej raz
\d+: <- dowolna cyfra występująca co najmniej raz
\d+ <- dowolna cyfra występująca co najmniej raz
)

\) <- ")"
\( <- "("
Gracz: <- SZUKANY CIĄG

(
. <- Dowolny Znak
* <- 0 lub Więcej
? <- znak może występować 0 lub 1 raz
)

. <- Dowolny Znak
* <- 0 lub Więcej
? <- znak może występować 0 lub 1 raz
$ <- koniec lub prawie koniec zezwalając na zakończenie wyrażenia

\) <- ")"
/ <- Ogranicznik

s <-(IMG:style_emoticons/default/questionmark.gif)
i <- brak wrażliwości na wielkość liter

i nie wiem co oznacza FLAGA s

  1. ^\- Metal: (\d+.\d+.\d+)\n- Kryształ: (\d+.\d+)\n- Deuter: (\d+.\d+)\n$/i


- Metal: 470.000.000
- Kryształ: 255.000
- Deuter: 140.000

tylko mam problem z przechwytywaniem (\d+.\d+.\d+) co jak metalu było by np. 470.000.000.000 a ja mam z patternie \d+.\d+.\d+

Go to the top of the page
+Quote Post
markonix
post
Post #15





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(nospor @ 17.10.2014, 12:16:44 ) *
@markonix za duzo bezsensownej zabawy. Jedno proste wyrazenie i po sprawie. Poza tym takie cos latwo zmodyfikowac gdy pojawią sie jakies zmiany

Może dla Ciebie, a dla mnie są znów bezsensowne wyrażenia regularne i nie ma co ukrywać - są trudniejsze.

Linia 0 - tu tylko wyrażenie regularne na wyciąganie wartości z nawiasów - przykład http://stackoverflow.com/questions/5794514...nt-from-bracket,
Linia 1 - pomijamy
Linia 2 - Ucinamy ją po dwukropku i mamy już wartość
Linia 3 - j/w
Linia 4 - j/w

Nie wiem co trudnego będzie w takim schemacie to modyfikacji?
Nowa wartość - wręcz banalnie uzupełnić.

Ten post edytował markonix 18.10.2014, 00:08:23
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Linia 0 - tu tylko wyrażenie regularne na wyciąganie wartości z nawiasów
Ha, skoro jednak uzywasz wyrazenia do czesci, to czemu nie uzyc go od razu do calosci? Przecież nie ma sensu uzywac wyrazenia na kawalek, a na inny już nie. Badź konsekwentny.

@ghastblood
si - tu masz napisane co oznaczają wszystkie modyfikatory/flagi
http://pl1.php.net/manual/en/reference.pcr...n.modifiers.php

Z racji, że zaczales coś sam robic, prosze, o to całe rozwiązanie:
  1. $te = 'jakaś nazwa plenty ( 1:482:6 ) (Gracz: jakaś nazwa gracza)
  2.  
  3. - Metal: 470.000
  4. - Kryształ: 255.000.00
  5. - Deuter: 140.000';
  6. preg_match("/^.*? \( (\d+:\d+:\d+) \) \(Gracz: (.*?)\)\s*.*?Metal: ([\d\.]+)\s*.*?Kryształ: ([\d\.]+)\s*.*?Deuter: ([\d\.]+).*?$/si",$te, $matches);
  7. print_r($matches);

[] - zbior znakow
\s - dowolny bialy znak

.* - dowolna liczba wszystkich znakow
.*? - dowolna najkrotsza liczba znakow
Miedzy nimi jest zasadnicza roznica
Go to the top of the page
+Quote Post
ghastblood
post
Post #17





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


dzięki za pomoc zaczynam to trochę rozumieć.
Go to the top of the page
+Quote Post

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: 27.09.2025 - 17:31