Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozdzielanie tekstu
Forum PHP.pl > Forum > Przedszkole
userphp
Witam, mam następujący problem, mam plik txt ktory wyglada tak :

022906032KC_1282
022906032KE_0871
022906032LA_1056
1K0035188F_DE2_0008
1K0035188F_DE2_0008
1K0035188F_DE2_0008
1K0035188F_DE2_0008

Chciałbym podzielić to na dwie części, po _ i przed ale w niektórych linijkach występuje np 1K0035188F_DE2_0008 i tutaj właśnie mam problem, nie wiem jak to ugryźć.
Wtedy mi skrypt dzieli to tak :

1K0035188F _DE2 _0008

a Chciałbym zeby podzielić to tak:

1K0035188F _DE2_0008

Żeby tej drugiej _ nie dzielił, tylko pierwszą, oczywiście są różne długości tekstu i tu sie robi problem.
trueblue
  1. $matches = [];
  2. preg_match("/([A-Z0-9]+)\_(.+)/", TU_TWOJ_STRING, $matches);
  3. print_r($matches);
Salvation
  1. <?php
  2.  
  3. $array = [
  4. '022906032KC_1282',
  5. '022906032KE_0871',
  6. '022906032LA_1056',
  7. '1K0035188F_DE2_0008',
  8. '1K0035188F_DE2_0008',
  9. '1K0035188F_DE2_0008',
  10. '1K0035188F_DE2_0008',
  11. ];
  12. $pattern = '/^(?<prefix>[a-z0-9]+)(?<number>_\w+)$/ui';
  13.  
  14. var_dump(array_map(static function (string $name) use ($pattern) {
  15. preg_match($pattern, $name, $match);
  16.  
  17. $prefix = $match['prefix'] ?? '';
  18. $number = $match['number'] ?? '';
  19.  
  20. if ('' === $prefix || '' === $number) {
  21. return [];
  22. }
  23.  
  24. return [
  25. $prefix,
  26. $number,
  27. ];
  28. }, $array));

Demo: https://3v4l.org/fEeJg
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.