![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 22.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym z ciągu 102,11,14,16 wyłuskać same liczby bez przecinków za pomocą preg_match_all Myślałem o czymś takim:
preg_match_all("#([0-9]{1,3})+#i",$strUser2,$wynik2,PREG_SET_ORDER) ; ale to nie wyłapuje mi ciągu "102,11,14,16" i z tego robi zmienne tylko wyłapuje 102 robi zmienne. Przeszukuje ciąg jeszcze raz i wyłapuje 11 robi z tego zmienną przeszukuje jeszce raz i.t.d... Jak zrobić by wzorzec pasował do tego wyrażenia z przecinkami i robił z każdej liczby zmienną ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 25.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
funkcja explode ? http://pl.php.net/explode
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
A niemorzesz użyć explode(",", $ciag)?
Lub może str_replace(",", "", $ciag)? @radeksnara Przepraszam, gdy pisałem mój post niebyło jeszcze twojego postu. @edit ( Lepszy sposób ) Przykład: Kod <?php $ciag = "102,11,14,16"; $ciag = str_replace(",", " ", $ciag); echo $ciag; ?> Lub: Kod <?php $ciag = "102,11,14,16"; $tablica = explode("," $ciag); $count = count($tablica); while($petla < $count) { $petla++; echo '' .$tablica['' .$petla. '']. ''; } ?> Dziękuję, Babcia@Stefa Ten post edytował Babcia@Stefa 12.01.2007, 15:33:58 -------------------- Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 22.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tzn kwestia jest taka, że ja piszę wyrażenie na nieco większe wyrażenie. Dla przykładu:
cos tam="sadfadasda" a cos innego="adasdad" oraz liczby="124,125,126,127" Mogę to załatwić wzorcem #cos tam=\"(.*?)\" a cos innego=\"(.*?)\" oraz liczby=\"([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3})\"# i wtedy jest to o co mi chodzi dokładnie!!! Tyle, że przyznam, że to dość kłopotliwe bo gdyby tych liczb po przecinku było 20 no to można tak dopisać kolejne warunki na wyrażenie ale wtedy to się robi długie i nieestetyczne. Więc jedna opcja to użycie explode po otrzymaniu odpowiedniej zmiennej z preg_match_all dla podanego wyrażeniu: #cos tam=\"(.*?)\" a cos innego=\"(.*?)\" oraz liczby=\"(.*?)\"# i wtedy w zmiennej 3 miałbym właśnie ciąg liczb i przecinków. Używam $pieces = explode(" ", $zmienna3); i oczywiście osiągam to co chciałem. Moje pytanie brzmi. Czy nie można tego po prostu załatwić samym wyrażeniem regularnym tworząc odpowiedni atom i grupując to? ![]() Bo co do $ciag = str_replace(",", " ", $ciag) co mi to da ![]() ![]() Ten post edytował Scrooge 12.01.2007, 15:49:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:51 |