Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne - jak znaleźć i wyświetlić wszystkie wystąpienia tekstu
115750
post 12.01.2015, 12:13:24
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

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


Załóżmy, że mamy długiego stringa.
Jak mogę znaleźć i wyświetlić (wrzucić do tablicy) wszystkie wystąpienia tekstu o określonych warunkach:
- tekst ma 3 znaki
- składa się z dużych liter i cyfr
- poprzedza go znak ' lub >
- zanim jest znak :

Przykład stringa:

'2J1:ПОКРЫТИЕ,НАПОЛЬНОЕ ВНУТРЕННЕЕ,СТАНДАРТНОЕ<br />37P:КОЛЕСО ЦВЕТА САТИНИРОВАННЫЙ ТИТАН<br />6Y4:ЗАПАСНОЕ КОЛЕСО И ШИНА,УДАЛИТЬ<br />'

W tym przypadku chciałbym wyłuskać teksty: 2J1, 37P, 6Y4
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trueblue
post 12.01.2015, 12:39:33
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


(\'|>)([A-Z0-9]){3}:


--------------------
Go to the top of the page
+Quote Post
115750
post 12.01.2015, 13:50:29
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 7.06.2004
Skąd: Poznań

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


Cytat(trueblue @ 12.01.2015, 13:39:33 ) *
(\'|>)([A-Z0-9]){3}:

Dzięki. Tak też w międzyczasie mniej więcej zrobiłem.
U mnie to wygląda tak:
  1. $check_hash = preg_match_all("/('|<br \/>)([A-Z-0-9]{3}):/", $text, $hashtweet);
Go to the top of the page
+Quote Post
-Albinos-
post 12.01.2015, 15:25:43
Post #4





Goście







Nie będę zakładał nowego tematu więc zapytam tu:
Pobrałem źródło strony curl'em i trzymam w zmiennej $tym
Potrzebuję wyciągnąć tekst z pomiędzy znaczników:
  1. <h2 class="username">nick</h2>

Zrobiłem takie wyrażenie:
  1. preg_match('|<h2 class="username">(.*?)</h2>|', $tym, $imie);

No i pod $imie[0] mam całość razem ze znacznikami h2, a pod $imie[1] zawartość znaczników czyli sam nick.
Moje pytanie brzmi czy można zrobić tak aby jedyną zwracaną wartością ($imie[0]) była tylko zawartość znacznika h2 a nie całe wyrażenie + zawartość?
Go to the top of the page
+Quote Post
trueblue
post 12.01.2015, 15:41:59
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Możesz użyć positive look behind. Wtedy taka część nie jest uwzględniana w wyniku:
  1. preg_match('|(?<=<h2 class="username">).*?(?<=</h2>)|', $tym, $imie);

Ale dobrą opcją jest http://simplehtmldom.sourceforge.net/


--------------------
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: 25.07.2025 - 07:54