Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przechwytywanie danych z textarea do inputów
Forum PHP.pl > Forum > Przedszkole
ghastblood
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
nospor
Az sie prosi o wyrazenie regularne. Z czym konkretnie masz problem?
ghastblood
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ść
nospor
....
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
Turson
preg_match z 3 argumentami zwraca dane ze wzroca
ghastblood
siedzę nad dokumentacją korzystam z regexp online i cały czas jest coś nie tak tongue.gif
nospor
To zamiast pokazywac jezor, pokaz kod z ktorym masz problem
markonix
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.
nospor
@markonix za duzo bezsensownej zabawy. Jedno proste wyrazenie i po sprawie. Poza tym takie cos latwo zmodyfikowac gdy pojawią sie jakies zmiany
ghastblood
  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

nospor
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
ghastblood
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
ghastblood
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 <-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+

markonix
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ć.
nospor
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
ghastblood
dzięki za pomoc zaczynam to trochę rozumieć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.