Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wydobycie danych z tekstu
AdBlock
post 10.06.2012, 13:54:38
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Witam.
Jak wydobyć z tekstu wpisywanego przez użytkownika na stronie dane wyglądające jak: 000|000
Liczby byłyby zmienne po obu stronach z zakresu 100 do 999, jednak nie można przewidzieć jakie byłyby to konkretnie liczby.
Dane te byłyby częścią dłuższego tekstu.

Na przykład tekst wyglądałby tak:
Bla Bla Bla (346|743) bla bla bla

I chodzi o wydobycie samego 346|743
Nie wiem z której strony to ugryźćsmile.gif

Z góry dziękuję za pomoc:)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
!*!
post 10.06.2012, 13:59:09
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


wyrażenia regularne preg_match


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
szmerak
post 10.06.2012, 13:59:47
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


wyrażenia regularne poczytaj http://php.net/manual/en/function.preg-match-all.php

dla przykładu takie coś:
  1. $text = "bla bla bla 910|293 nasda mlamdsa";
  2. preg_match_all("/([0-9|]+){7}/", $text, $new);
  3. var_dump($new);


niesprawdzałem ale powinno działać

Ten post edytował szmerak 10.06.2012, 14:07:35
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 15:42:51
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Cytat
Data 10.06.12 15:26:21
Siała baba mak
Dziad

Jeżeli mam coś takiego w textarea, to jak zrobić preg_match_all od Data do Dziad? Bo jeżeli chcę do Siała (wydobyć datę), to działa ten kod:
  1. preg_match_all ("|Data(.*)\sSiała|U", $nazwa, $data, PREG_PATTERN_ORDER);

a to nie działa (jeżeli chcę wydobyć "Siała baba mak"):
  1. preg_match_all ("|Data(.*)\sDziad|U", $nazwa, $data, PREG_PATTERN_ORDER);


Lub jak inaczej wydobyć "Siała baba mak"? (data jest zmienna, więc nie można na niej wykonać preg_match_all)

Ten post edytował AdBlock 10.06.2012, 15:44:19
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 15:58:30
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Kod
'/Data([\s\.\:0-9]+)([a-zA-Z\s]+)Dziad/'


Wtedy odbierasz:

Kod
Array
(
[0] => Array
(
   [0] => Data 10.06.12 15:26:21 Siala baba mak Dziad
)

[1] => Array
(
   [0] =>  10.06.12 15:26:21
)

[2] => Array
(
   [0] => Siala baba mak
)

)


Ten post edytował !*! 10.06.2012, 16:00:25


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 16:12:06
Post #6





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Coś muszę chyba źle robić...
  1. preg_match_all ('/Data([\s\.\:0-9]+)([a-zA-Z\s]+)Dziad/', $nazwa, $data2, PREG_PATTERN_ORDER);

ani
  1. preg_match_all ('|Data([\s\.\:0-9]+)([a-zA-Z\s]+)Dziad|U', $nazwa, $data2, PREG_PATTERN_ORDER);

nie działają...

Ten post edytował AdBlock 10.06.2012, 16:12:23
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 16:23:23
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Fakt, zapisałem to ciurkiem i działało... musisz dodać do tego wyrażenia opcje z enterem czy jakoś tak:

Kod
"/Data([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Dziad/U"


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 16:30:14
Post #8





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Wciąż niestety nie działa...
  1. preg_match_all ('|Data([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Dziad|U', $nazwa, $data2, PREG_PATTERN_ORDER);

Wydaje mi się wszystko ok, ale print_r zwraca pustą tablicę.
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 16:32:11
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Pokaż kod, bo u mnie jest tablica z datą i "Siala baba mak "


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 16:36:38
Post #10





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


  1. $nazwa = "Data 10.06.12 15:26:21
  2. Siała baba mak
  3. Dziad";
  4. preg_match_all ('|Data([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Dziad|U', $nazwa, $data2, PREG_PATTERN_ORDER);
  5. print_r($data2);
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 16:40:16
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


jak używasz \r\n\s to musi być wyrażenie w cudzysłowu a nie apostrofach.

  1. $text = 'Data 10.06.12 15:26:21
  2. Siala baba mak
  3. Dziad';
  4. echo $text.'<br/>';
  5. $text = preg_match_all ("/Data([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Dziad/U", $text, $data, PREG_PATTERN_ORDER);
  6.  
  7. echo '<pre>';
  8. print_r($data);


Ten post edytował !*! 10.06.2012, 16:37:56


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 16:40:22
Post #12





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


  1. preg_match_all ("|Data([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Dziad|U", $nazwa, $data2, PREG_PATTERN_ORDER);

tak?
niestety niczego to nie zmienia
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 16:43:57
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Sprawdź kod wyżej, jest ok.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 17:04:15
Post #14





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


  1. $text = 'Wysłane 10.06.12 15:47:41
  2. Jeden dwa trzy
  3. Cztery';
  4. $text = preg_match_all ("/Wysłane([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Cztery/U", $text, $data, PREG_PATTERN_ORDER);
  5. print_r($data);


Mógłbyś mi powiedzieć dlaczego to nie działa? Prawie identycznie jak poprzednie, różni się kilkoma wyrazami, a nie działa...
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 17:07:35
Post #15





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Działa.

Kod
Array
(
    [0] => Array
        (
            [0] => Wysłane    10.06.12 15:47:41

Jeden dwa trzy

Cztery
        )

    [1] => Array
        (
            [0] =>     10.06.12 15:47:41
        )

    [2] => Array
        (
            [0] =>

Jeden dwa trzy


        )

)


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 17:15:52
Post #16





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Dziwne... jak wrzuciłem to do zupełnie nowej strony też działało.
Teraz też wrzucam to do nowej strony:
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. echo $nazwa.'<br /><br /><br />';
  4. preg_match_all ("/Wysłane([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Szczęście/U", $nazwa, $data, PREG_PATTERN_ORDER);
  5. print_r($data);
  6. ?>
  7. <form action="preg.php" method="post">
  8. <textarea name="nazwa" cols="50" rows="10"></textarea><br />
  9. <input type="submit" name="submit" value="Konwertuj">
  10. </form>
  11. <?php
  12. ?>


I nie działa...
Działa u Ciebie?
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 17:20:08
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak, Sprawdź czy aby na pewno wysyłasz to co chcesz odebrać.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 17:21:53
Post #18





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Wysyłam
Cytat
Wysłane 10.06.12 15:47:41
Jeden dwa trzy
Szczęście


Wyświetla mi się:
  1. Wysłane 10.06.12 15:47:41 Jeden dwa trzy Szczęście
  2.  
  3.  
  4. Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )
Go to the top of the page
+Quote Post
!*!
post 10.06.2012, 17:34:16
Post #19





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. (
  2. [0] => Array
  3. (
  4. [0] => Wysłane 10.06.12 15:47:41
  5. Jeden dwa trzy
  6. Szczęście
  7. )
  8.  
  9. [1] => Array
  10. (
  11. [0] => 10.06.12 15:47:41
  12. )
  13.  
  14. [2] => Array
  15. (
  16. [0] =>
  17. Jeden dwa trzy
  18.  
  19. )
  20.  
  21. )


Cytat
Wysłane 10.06.12 15:47:41
Jeden dwa trzy
Szczęście


  1. $text = $_POST['nazwa'];
  2. echo $text.'<br /><br /><br />';
  3.  
  4. preg_match_all ("/Wysłane([\.\:0-9\s\r\n]+)([a-zA-Z\s\r\n]+)Szczęście/U", $text, $data, PREG_PATTERN_ORDER);
  5.  
  6. echo '<pre>';
  7. print_r($data);


Działa jak w mordę strzelił. Może coś nadpisujesz, sprawdź to w czystym, innym pliku na serwerze.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
AdBlock
post 10.06.2012, 17:47:31
Post #20





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


http://adblock.unixstorm.org/test/tescik.php

nie działa
nie mam już pomysłu co zrobić, aby działało
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:55