Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyciągane z pliku wyrazu zwartego pomiędzy frazami
szneku
post 15.03.2018, 14:51:42
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


Witam, mam problem związany z wyciąganiem zawartośći z pliku edytowalnego w notatniku.

CODE
$f = file('test1.NST');

foreach ($f as $line_num => $f ) {
echo "Linia #<b>{$line_num}</b> : " . htmlspecialchars($f) . "<br />\n";
}
$tekst = "To jest tekst. Tego zdania nie będzie widać.";
foreach ($f as $line_num => $f ) {
$zdanie = substr(htmlspecialchars($f), 0, strpos(htmlspecialchars($f), ".DFT"));
}
print $zdanie;


Wyświetla mi całą zawartość pliku tak jak bym go otwierał w notatniku, ale potrzebuję wyciągnąć frazy

/P 11-92916-00-01.DFT
/I 0.0 0.0

która ma na końcu rozszerzenie ".DFT" a zaczyna sie od "/P "

Pierwszy raz robię coś na plikach i nie bardzo wiem jak się za to zabrać, nigdzie nie znalazłem podobnego wątku także liczę na waszą pomoc.

Dziękuje i pozdrawiam.
Go to the top of the page
+Quote Post
markuz
post 15.03.2018, 14:56:53
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. preg_match_all("/\/P (.*)\.DFT/", $input_lines, $output_array);
  2. var_export($output_array[1]);


--------------------
Go to the top of the page
+Quote Post
szneku
post 16.03.2018, 14:15:36
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


Dziękuje, działają mi polecenia gdy w zmienną mam zapisane ręcznie, z pliku jako string nie.


CODE

$plik = 'test1.NST';
$tekst = file_get_contents($plik);

preg_match_all("/\/P (.*)\.DFT/", $tekst, $out);
var_export($out[1]);


zwraca mi wartość "array ( ) "
Go to the top of the page
+Quote Post
Pyton_000
post 16.03.2018, 14:26:00
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


pokaż kawałem zawartości pliku gdzie jest ten fragment.
Go to the top of the page
+Quote Post
szneku
post 16.03.2018, 14:29:04
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


CODE
[2000]
/P drzwi 810x1800 RS500.DFT
/I 0.0 0.0 ""
/O 10.00000 0.00000 1 0 0 1520491627 5
/A 0.00000
/M 0
/G 1 1 1817.00000 829.00000 0 0 0.00000 1 0.00000 1
InstanceCoilsData = 0 0.000000 0.000000 0 0.000000

[2000]
/P 11-92916-00-01.DFT
/I 0.0 0.0 ""
/O 1567.44979 357.84139 2 0 0 1520491680 5
/A 270.00000
/M 0
/G 1 1 101.52136 755.00000 0 0 0.00000 1 0.00000 1
InstanceCoilsData = 0 0.000000 0.000000 0 0.000000
Go to the top of the page
+Quote Post
Pyton_000
post 16.03.2018, 14:38:23
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


var_export($out);
Go to the top of the page
+Quote Post
szneku
post 16.03.2018, 14:44:51
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


wynik : array ( 0 => array ( ), 1 => array ( ), )
Go to the top of the page
+Quote Post
markuz
post 16.03.2018, 15:03:26
Post #8





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. var_export($tekst);


Ten post edytował markuz 16.03.2018, 15:03:33


--------------------
Go to the top of the page
+Quote Post
trzczy
post 16.03.2018, 16:51:32
Post #9





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Stworzyłem plik z kodowaniem Windows-1250, czyli chyba taki jak notatnik, wkliłem podany tekst i zadziałało z patternem Markuza
  1. <?php
  2.  
  3. $text = file_get_contents('test.txt');
  4. $pattern = '/\/P (.*)\.DFT/';
  5. preg_match_all($pattern, $text, $array);
  6. var_export($array); //array ( 0 => array ( 0 => '/P drzwi 810x1800 RS500.DFT', 1 => '/P 11-92916-00-01.DFT', ), 1 => array ( 0 => 'drzwi 810x1800 RS500', 1 => '11-92916-00-01', ), )

Go to the top of the page
+Quote Post
szneku
post 19.03.2018, 08:22:58
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


Trzczy, też to nie działa. Próbowałem różne kodowania i przy Windows-1250 nic mi nie wyświetla. Chyba problem tkwi w formacie pliku, plik jest zapisem konfiguracji do maszyny CNC, gdzieś tu jest wilk pogrzebany.

Zauważyłem że jak plik .NST zapisze w formacie .TXT z kodowaniem ANSI to odczytuje. Taka operacja akurat mija się z celem bo już jest wkład manualny w to, a chodzi o z automatyzowanie procesu. Dodam pytanie z innej beczki, czy jest możliwość za pomocą skryptu przekonwertować plik na możliwy do odczytu ?
Go to the top of the page
+Quote Post
Pyton_000
post 19.03.2018, 09:25:04
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Podeślij na PW ten pliczek ew. umieść go tutaj jeśli możesz to zobaczymy co się dzieje.
Go to the top of the page
+Quote Post
szneku
post 19.03.2018, 10:07:08
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


https://drive.google.com/file/d/1QwgxvF_Aqq...iew?usp=sharing
Go to the top of the page
+Quote Post
Pyton_000
post 19.03.2018, 10:19:49
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Plik jest w UTF-16 którego preg_* nie obsługuje.


  1. <?php
  2.  
  3. $text = file_get_contents('m743.NST');
  4. $text = mb_convert_encoding($text, 'UTF-8', 'UTF-16');
  5. $pattern = '/\/P (.*)\.DFT/';
  6. preg_match_all($pattern, $text, $array);
  7. var_export($array);
Go to the top of the page
+Quote Post
szneku
post 19.03.2018, 10:29:49
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.03.2018

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


Działa biggrin.gif

Bardzo dziękuję za pomoc smile.gif, nauczyłem się czegoś nowego.
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: 19.04.2024 - 19:33