Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciągane z pliku wyrazu zwartego pomiędzy frazami
Forum PHP.pl > Forum > PHP
szneku
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.
markuz
  1. preg_match_all("/\/P (.*)\.DFT/", $input_lines, $output_array);
  2. var_export($output_array[1]);
szneku
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 ( ) "
Pyton_000
pokaż kawałem zawartości pliku gdzie jest ten fragment.
szneku
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
Pyton_000
var_export($out);
szneku
wynik : array ( 0 => array ( ), 1 => array ( ), )
markuz
  1. var_export($tekst);
trzczy
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', ), )

szneku
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 ?
Pyton_000
Podeślij na PW ten pliczek ew. umieść go tutaj jeśli możesz to zobaczymy co się dzieje.
Pyton_000
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);
szneku
Działa biggrin.gif

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