Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak odczytać z pliku .txt teksty zawarte tylko pomiędzy nawiasami (text)?, Odczytywanie tekstu tylko pomiędzy nawiasami sześciennymi "("
AmyLokmart
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Mam kolejny problem. Dokładnie chodzi, o odczyt z pliku tekstowego tylko tych fragmentów tekstu, które są zawarte pomiędzy nawiasami sześciennymi, czyli między znakiem "(", a znakiem ")". Reszta tekstu, która nie jest zawarta w nawiasach chciałabym pominąć. Jest to dla mnie ważne ponieważ teksty w nawiasach wymagają specjalnego formatowania, ale, żeby to zrobić to najpierw muszę wyciągnąć te teksty z plików i sporządzić listę.

Czy ktoś wie jak to zrobić?

Na razie mam tak:

  1. $lines = file('base.txt');
  2. // Pętla: tworzy listę wszystkich znalezionych pozycji
  3. foreach ($lines as $line_num => $line) {
  4. echo $line . "<br />";
  5. }

Go to the top of the page
+Quote Post
aras785
post
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


https://www.php.net/manual/en/function.preg-match.php

lub

https://www.php.net/manual/en/function.preg-match-all.php

przykład wzorca:

https://www.phpliveregex.com/p/D63
Go to the top of the page
+Quote Post
AmyLokmart
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Dziękuję "Aras785" za podpowiedzi (IMG:style_emoticons/default/smile.gif) Przeszukałam dokumentację, ale próbując utworzyć wzorzec na podstawie wyjaśnionych szczegółów nie działał mi ten mechanizm za dobrze, ponieważ w wielu przypadkach dublował string lub dodawał niezliczone ilości pustych wierszy. Co do podanej strony przez Ciebie: https://www.phpliveregex.com/p/D63, muszę napisać, że jeśli wykonywałabym swoje działania na zmiennej to wzorzec:

  1. preg_match('/\((.*?)\)/i', $input_line, $output_array);


Podany na stronie: https://www.phpliveregex.com/p/D63, ma sens i oczywiście działa (IMG:style_emoticons/default/smile.gif) W moim przykładzie dodatkowo działania przebiegają w pętli, która wymaga dodatkowego warunku i ten wzorzec: "/\((.*?)\)/i" się nie sprawdzi (sprawdziłam to i nie działa).

Użyłam funkcji preg_match zmieniając wzorzec po swojemu, metodą prób i błędów oraz informacji wyjaśniających każdy element i utworzyłam własny wzorzec

  1. preg_match('!\(([^\)]+)\)!', $input_line, $output_array);


Do funkcji oczywiście dodałam warunek i działa ślicznie (IMG:style_emoticons/default/smile.gif)

PS: Dla tych, którzy chcą zrozumieć jak działa PREG osobiście polecam zapoznać się i nauczyć cech "Regex" - naprawdę pomaga, wiem z doświadczenia (IMG:style_emoticons/default/smile.gif)

Pozdrawiam PHPowców (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
aras785
post
Post #4





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Widzisz, nie podałaś kontekstu i nikt poza Tobą dalej nie wie co niby nie działało - mój przykład był odpowiedzią na Twoje pytanie. Swoją drogą podany przez Ciebie wzorzec wyszukuje te same fragmenty co ten z przykładu. A co do tych Twoich podsumowań to nie mam pytań.. pytasz, a później uczysz innych korzystać z dokumentacji (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 08:29