Jak masowo wyciągnąć tekst z pliku pomiędzy znacznikami.

0

Dzień dobry, jak mogę zaznaczyć tekst pomiędzy znacznikami '' tak jak w przykładzie poniżej mam tych linii ok 5tyś jest to plik php do przetłumaczenia wtyczki w prestashopie. Muszę z tekstu wyciągnąć z tych lini tylko tekst pomiędzy znacznikami '' następnie przetłumaczyć i znowu wkleić tylko jak masowo mogę zaznaczyć i wyciągnąć tekst tylko w tym miejscu pomiędzy ''?

$_MODULE['<{spmgsnipreview}prestashop>spmgsniprev...'] = 'Przykładowy tekst do wyciągnięcia';
$_MODULE['<{spmgsnipreview}prestashop>spmgsniprev1...'] = 'Przykładowy tekst1';

Przepraszam poszukuje porady jak najlepiej wyciągnąć tekst i myślę ze chyba najlepsze będzie visual studio code z pythonem? Bo raczej zwykłe notepad++ nie zda egzaminu? A może jakiś inny jeżyk do tego będzie lepszy?

2

No szczerze mówiąc to nie wiem czy robienie tego z automatu jest dobrym pomysłem, bo możesz znaleźć np taki kod:

$_MODULE['<prestashop>spmgsniprev...'] = 'I don\'t like ice cream';

i jeśli niepoprawnie znajdziesz wystąpienie, to znajdziesz tylko I don\.

Musiałbyś albo dobrze napisać takie wyszukiwanie (które bierze pod uwagę escape'y) albo skorzystać z parsera PHP.

1

Użyj go jak normalny php plik i iteruj po $_MODULE as $key=>$value
przetłumacz i na podstawie tego wygeneruj plik zgodnie ze schematem.

1
Riddle napisał(a):

No szczerze mówiąc to nie wiem czy robienie tego z automatu jest dobrym pomysłem, bo możesz znaleźć np taki kod:

$_MODULE['<prestashop>spmgsniprev...'] = 'I don\'t like ice cream';

i jeśli niepoprawnie znajdziesz wystąpienie, to znajdziesz tylko I don\.

Chyba nie będzie tak źle ;)
screenshot-20230103131539.png
Wyrażenie: =.*?'(.*)'.*?;
Stronka do testowania wyrażeń: https://regex101.com/

Riddle napisał(a):

Musiałbyś albo dobrze napisać takie wyszukiwanie (które bierze pod uwagę escape'y) albo skorzystać z parsera PHP.

No właśnie, mógłby przecież tablicę $_MODULE zapisać w pliku jako CSV.
Pary klucz => wartość.

@dsxsoft:

  1. Wyciągasz klucze: https://www.php.net/manual/en/function.array-keys.php
  2. Iterujesz po kluczach pętlą for, żeby dobrać się do wartości ($_MODULE[$klucz]).
  3. Zapisujesz klucze razem z wartościami do pliku CSV.
  4. Potem możesz nawet w arkuszu kalkulacyjnym wyciągąć same wartości, żeby wrzucić do translatora.
dsxsoft napisał(a):

Przepraszam poszukuje porady jak najlepiej wyciągnąć tekst i myślę ze chyba najlepsze będzie visual studio code z pythonem? Bo raczej zwykłe notepad++ nie zda egzaminu? A może jakiś inny jeżyk do tego będzie lepszy?

Do takich małych skryptów wystarczy ten Notepad++...
Ja małe apki piszę w Geany.

1
Spine napisał(a):

Chyba nie będzie tak źle ;)
screenshot-20230103131539.png

To jeszcze 'a \\' z escape'em backslasha ma być złapany, 'a \\\' z escapem backslasha i escape'em apostrofu nie ma, i tak dalej. Dodatkowo to samo dla stringów ".

Poza tym, regexp .*?'(.*)'.*? złapie dwa stringi obok siebie, np 'one'; 'two';.

0

Brniecie w bagno z tym regexpem.

0
hzmzp napisał(a):

Brniecie w bagno z tym regexpem.

Proszę mi nie zarzucać nic takiego, pragnę zauważyć że ja od początku mówiłem że....

Riddle napisał(a):

No szczerze mówiąc to nie wiem czy robienie tego z automatu jest dobrym pomysłem.

Moje przykłady z regexpami są tylko argumentem za tym, że to jest zły pomysł, bo dużo rzeczy może się zwalić.

0

Pozornie prosto wyglądające zadanie ale jednak ciężko do wykonania jeszcze to masowo przetłumaczyć wkleić z powrotem jeszcze zachowując polskie znaki:) chyba odpuszczę:)

2

Sprawa jest bajecznie prosta, co innego jakość automatycznych tłumaczeń.

1 użytkowników online, w tym zalogowanych: 0, gości: 1