Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekonwertowanie do tablicy
winiar789
post 12.02.2019, 15:37:19
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 15.11.2011

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


Cześć i czołgiem ekipa smile.gif

Mam wartości o takie

  1.  
  2. ---------------------------------------------------------------------------------------
  3. Repair # PO# Dispatch # Serial #
  4. 030346640160 93216 G346063998 FVFWK9GMHV22
  5.  
  6. Repair Date SN Type Warranty
  7. 05.12.2018 SP Carry-In Repairs QUALITY PROGRAM
  8.  
  9. Material # Description Amount Score Total
  10. 011-0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  11. ---------------------------------------------------------------------------------------
  12. Repair # PO# Dispatch # Serial #
  13. 030347401398 93896 G346823047 C02W8JC4HV22
  14.  
  15. Repair Date SN Type Warranty
  16. 10.12.2018 SP Carry-In Repairs QUALITY PROGRAM
  17.  
  18. Material # Description Amount Score Total
  19. 011-0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  20. ---------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------
Repair # PO# Dispatch # Serial #
023423423 93216 G348888888 FFFFFSSSFFF2

Repair Date SN Type Warranty
05.12.2018 SP Carry-In Repairs QUALITY PROGRAM

Material # Description Amount Score Total
011-0555 SVC, LABOR TIER 1 67.00 1.75 117.25
---------------------------------------------------------------------------------------
Repair # PO# Dispatch # Serial #
054353453434 93896 G349999999 C02FFFFFFSSS

Repair Date SN Type Warranty
10.12.2018 SP Carry-In Repairs QUALITY PROGRAM

Material # Description Amount Score Total
011-0444 SVC, LABOR TIER 1 67.00 1.75 117.25
---------------------------------------------------------------------------------------


Po prostu idzie kopiuj wklep do textarea -> submit

I przechwytujac to POSTEM chce poukładać to odpowiednio

Material # => 011-0471
PO# => 93216

itd. itd.

A pytanie jak mogę to ładnie porozbijać i dopasować do siebie ?

Będe turbo wdzięczny za pomoc

Trochę kombinuje i na poczatku mógłbym to rozbić
  1.  
  2. $resultArray = explode("\r\n", $_POST['tekst']);
  3.  
  4.  

w ten czas mam linia po lini i dać tla tabulatorów

  1.  
  2. $resultArray2 = explode("\t", $tekst);
  3.  
  4.  


ale tak zostaja mi linie --------
co bedzie kiedy numery linii beda inne :/

Ten post edytował winiar789 12.02.2019, 15:08:29
Go to the top of the page
+Quote Post
Tomplus
post 12.02.2019, 19:09:52
Post #2





Grupa: Zarejestrowani
Postów: 1 309
Pomógł: 157
Dołączył: 20.03.2005
Skąd: Będzin

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


Ja nie wiem które dane są te właściwe, ale chyba w tam gdzie BBCODE użyłeś, i powiem tak...
Masz tam same spacje, nie ma tabulatorów z tego co widzę, więc raczej nie rozbijesz tego tak łatwo.

Przy pomocy wyrażeń regularnych też nie jest proste, może ktoś da radę, ale mnie się nie chce myśleć w tej kwestii za dużo.
Dlatego zrobiłbym tak, ale także za pomocą wyrażeń regularnych.

Przyjmuję że min. 2 spacje muszą być aby oddzielić jedną treść od drugiej czyli:

  1. $string = preg_replace('/(\s){2,}/', "\t", $string);


dzięki temu dane będą wyglądać tak:

Kod
---------------------------------------------------------------------------------------
Repair #    PO#    Dispatch #    Serial #
030346640160    93216    G346063998    FVFWK9GMHV22    
Repair Date    SN Type    Warranty    
05.12.2018    SP Carry-In Repairs    QUALITY PROGRAM    
Material #    Description    Amount    Score    Total    
011-0471    SVC, LABOR TIER 1    67.00    1.75    117.25
---------------------------------------------------------------------------------------    
Repair #    PO#    Dispatch #    Serial #    
030347401398    93896    G346823047    C02W8JC4HV22    
Repair Date    SN Type    Warranty    
10.12.2018    SP Carry-In Repairs    QUALITY PROGRAM    
Material #    Description    Amount    Score    Total    
011-0471    SVC, LABOR TIER 1    67.00    1.75    117.25
---------------------------------------------------------------------------------------


Następnie droga już prosta: możesz użyć swoje explode, albo też wyrażenia regularne (https://regex101.com/)
Go to the top of the page
+Quote Post
winiar789
post 12.02.2019, 22:18:06
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 15.11.2011

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


Bardzo mi pomogłeś dziękuje smile.gif a czy byłaby szansa jeszcze na małą podpowiedz odnośnie znaczników ?

jak wydobyć zawartość mędzy znakami

-------------

-------------

w ten czas już środek sobie rozbije i poukładam
Go to the top of the page
+Quote Post
Tomplus
post 13.02.2019, 08:17:27
Post #4





Grupa: Zarejestrowani
Postów: 1 309
Pomógł: 157
Dołączył: 20.03.2005
Skąd: Będzin

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


To też można rozbić wyrażeniami, ale ja nie potrafię Ci pomóc. Poniższy kod wyrażenie regularnego jest wadliwy. Nie wiem jak w pełni wyłuskać dane jak należy.

  1. preg_match_all("/[^-]{2,}/", $string, $match);
  2. print_r($match);


Bo drukuje tablicę, zamiast z dwoma kluczami, to z 6cioma.

Kod
Array
(
    [0] => Array
        (
            [0] =>
Repair #    PO#    Dispatch #    Serial #
030346640160    93216    G346063998    FVFWK9GMHV22    
Repair Date    SN Type    Warranty    
05.12.2018    SP Carry
            [1] => In Repairs    QUALITY PROGRAM    
Material #    Description    Amount    Score    Total    
011
            [2] => 0471    SVC, LABOR TIER 1    67.00    1.75    117.25

            [3] =>    
Repair #    PO#    Dispatch #    Serial #    
030347401398    93896    G346823047    C02W8JC4HV22    
Repair Date    SN Type    Warranty    
10.12.2018    SP Carry
            [4] => In Repairs    QUALITY PROGRAM    
Material #    Description    Amount    Score    Total    
011
            [5] => 0471    SVC, LABOR TIER 1    67.00    1.75    117.25

        )

)
Go to the top of the page
+Quote Post
winiar789
post 13.02.2019, 11:38:33
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 15.11.2011

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


Woow smile.gif odrazu lepiej tak naprawdę już prawie w domu.
Muszę jeszcze zrobić w sumie ostatnią rzecz to co jest w linii dodanie co 3 do array.

  1.  
  2. (
  3. [0] => Repair # PO# Dispatch # Serial # 030346640160 93216 G346063998 FVFWK9GMHV22 Repair Date SN Type Warranty 05.12.2018 SP Carry
  4. [1] => In Repairs QUALITY PROGRAM Material # Description Amount Score Total 011
  5. [2] => 0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  6. [3] => Repair # PO# Dispatch # Serial # 030347401398 93896 G346823047 C02W8JC4HV22 Repair Date SN Type Warranty 10.12.2018 SP Carry
  7. [4] => In Repairs QUALITY PROGRAM Material # Description Amount Score Total 011
  8. [5] => 0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  9. )
  10.  




  1.  
  2. $string = preg_replace('/(\s){2,}/', "\t", $string);
  3. preg_match_all("/[^-]{2,}/", $string, $match);
  4.  
  5. $match=$match[0];
  6. $ilosc=count($match)-1;
  7.  
  8.  
  9. $Arr=array();
  10. for ($i = 0; $i <= $ilosc; $i++) {
  11. if($i%3) echo '<br>';
  12. echo $i;
  13. }
  14.  
  15.  
  16.  



Tak próbuje to zrobić do array co 3 a mi nie wychodzi - efekt jaki chciałbym osiągnąc:


  1.  
  2. (
  3. [0] =>
  4. [0] => Repair # PO# Dispatch # Serial # 030346640160 93216 G346063998 FVFWK9GMHV22 Repair Date SN Type Warranty 05.12.2018 SP Carry
  5. [1] => In Repairs QUALITY PROGRAM Material # Description Amount Score Total 011
  6. [2] => 0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  7. )
  8. [1] =>
  9. [3] => Repair # PO# Dispatch # Serial # 030347401398 93896 G346823047 C02W8JC4HV22 Repair Date SN Type Warranty 10.12.2018 SP Carry
  10. [4] => In Repairs QUALITY PROGRAM Material # Description Amount Score Total 011
  11. [5] => 0471 SVC, LABOR TIER 1 67.00 1.75 117.25
  12. )
  13. )
  14.  


Go to the top of the page
+Quote Post
Tomplus
post 13.02.2019, 12:44:42
Post #6





Grupa: Zarejestrowani
Postów: 1 309
Pomógł: 157
Dołączył: 20.03.2005
Skąd: Będzin

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


Dlatego powiedziałem że to jest źle. Mam nadzieję że inny forumowicz pomoże w tej kwestii.

Jest jeszcze opcja inna:
zamieniasz wszystkie znaki np. na ~

  1. $string = preg_replate('\([-]{2,}+)\', '~', $string);


a dopiero potem korzystasz z ([^~]+)
Go to the top of the page
+Quote Post

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: 23.02.2019 - 22:47