Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne - jak znaleźć i wyświetlić wszystkie wystąpienia tekstu
Forum PHP.pl > Forum > Przedszkole
115750
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
trueblue
(\'|>)([A-Z0-9]){3}:
115750
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);
Albinos
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ść?
trueblue
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/
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.