Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]wyrażenie regularne
Forum PHP.pl > Forum > PHP
szmerak
Napisałem na szybko takie coś:
  1. include 'db.inc.php';
  2. $sql = "SELECT text FROM servers WHERE id=1";
  3. $query = mysqli_query($db, $sql);
  4. $row = mysqli_fetch_array($query);
  5. echo $row[text];
  6. $url = preg_match("@\[img\](http:\/\/[a-zA-Z0-9\/.]+)\[\/img\]@i", $row[text], $url1);
  7. $go = $url1[0];
  8. $go = preg_replace("/\[img\]/", "", $go);
  9. $go = preg_replace("/\[\/img\]/", "", $go);
  10. if($url)
  11. {
  12. echo "<br><br>zawiera<br>";
  13. echo $go;
  14. }else{
  15. echo "<br><br>nie zawiera<br>";
  16. }


I teraz pytanie jak zrobić aby pobierał i wsadzał do tablicy wszystkie znalezione wyniki pasujące do wyrażenia nie tylko pierwszy jaki znajdzie?

pewnie proste ale z wyrażeń regularnych nie jestem za dobry tongue.gif
dopiero zaczełem się uczyć
plej
ma wybierać wszystkie dane z bazy? o id 1?
to musisz pętle daćsmile.gif
przykład:

  1. $query = ""; //zapytanie
  2. $result = mysql_query($query); // wykonanie zapytania
  3. if (!$result) { // sprawdzenie czy nie ma błędu
  4. die("Nie można wykonac zapytania do bazy danych". mysql_error) ;
  5. }
  6. while ($row = mysql_fetch_assoc($result) { // pobranie wyników
  7. echo $row[text]; // nie musi być tu 'echo' wystarczy że $row["text" przypiszesz do zmiennej i wtedy lepiej sie posługiwac zmienną:)
  8. // wrzuc reszte do pętli pobaw się
  9. }
  10.  
  11.  



a tu masz fajne filmiki: http://www.uw-team.org/videoarty_kurs_php.html

warto obejrzeć je sporo cię nauczą smile.gif
szmerak
Udam że tego postu wyżej nie było.
Czekam na dalszą pomoc
plej
Czemu udasz że nie było?? wystarczy ruszyć główką i ci pomoże.
Bo nie napisałem ci całego gotowego kodu? tylko mały przykład?
skoro nie chce ci sie myśleć ani bawić to przerzuć się na html


Pozdro.smile.gif
szmerak
  1. include 'db.inc.php';
  2. $sql = "SELECT text FROM servers WHERE id=1";
  3. $query = mysqli_query($db, $sql);
  4. $row = mysqli_fetch_array($query);
  5. echo $row[text];
  6. $url = preg_match("@\[img\](http:\/\/[a-zA-Z0-9\/.]+)\[\/img\]@i", $row[text], $url1);
  7. $go = $url1[0];
  8. $go = preg_replace("/\[img\]/", "", $go);
  9. $go = preg_replace("/\[\/img\]/", "", $go);
  10. if($url)
  11. {
  12. echo "<br><br>zawiera<br>";
  13. echo $go;
  14. }else{
  15. echo "<br><br>nie zawiera<br>";
  16. }

I teraz pytanie jak zrobić aby pobierał i wsadzał do tablicy wszystkie znalezione wyniki pasujące do wyrażenia nie tylko pierwszy jaki znajdzie?

Co twoja wypowiedź wnosi do tego tematu?
plej
Cytat
nie tylko pierwszy jaki znajdzie?


wniosek? użyć pętli? bo tak jak masz to ci pobiera tylko jeden wynik pierwszy?
szmerak
Dam ci przykład
Tekst
Want to stop looking for a great server to go on, and finally find one? Great, you should stop here! Trust me, you'sad"""// (img)http://sadfasdf.pl(/img) SIN Gaming - One of the most popular servers in Minecraft! Our server has a real-time map, an economy, quests, an AWESOME spawn, a cooperative community, shops, cities, houses, NPCs, a slick website
(img)http://sadfsssasdf.pl(/img)


I on zawiera 2x (img)url(/img) - czytaj z [ ]
I jak zrobić aby pobierał każdy który znajdzie a nie tylko pierwszy. Bo tablica url1 zawiera zawsze tylko pierwszy
rozumiesz?

wiem ze uzyc petli tylko nie wiem jak to zrobic. skad pobrac ilosc znalezionych a potem za kazdym razem ominac juz przeprasowane
plej
Pobiera ci jeden wynika tak? pasujący! to zeby reszte pobrało to co musisz użyć ? pętli !
szmerak
Stary jesteś geniuszem dzięKi!
a teraz idź...
plej
< no coment >
szmerak
naprawde napisaliśmy 10 postów które nic nie znaczą a ja czekam na konkretniejsze wskazówki.
to że mam użyć pętli nic mi nie mówi.

Skoro tak wiesz wszystko powiedz mi gdzie mam wsadzić tą pętle...

plej
to od nowa:) pokaż baze danych:) i kod i daj komentarze smile.gif


  1. $go = $url1[0];


[0] dlatego jeden ? lepiej chyba dac puste i dać z pętląsmile.gif i wtedy powinno ci zwracać wszystkie:) rozumiesz? podaj to co ci u góry napisałem:)
szmerak
  1. for($x = 0 ; $x < sizeof($url1) ; $x++)
  2. {
  3. echo $url1[$x]."<br>";
  4. }

Patrz się zrobilem tak i daje mi to takie wyniki:
[img)http://sadfasdf.pl[/img)
http://sadfasdf.pl
plej
ale wyniki z bazy danych też musi ci zwracać w pętli smile.gif
bo tak to ci pobiera pierwszy wynik:) nawet na tych filmikach co ci dałem linka masz o tym:)
szmerak
z bazy to ja muszę pobrać tylko jeden text który ma zapisany przy serwerze.
A potem sprawdzyć czy zawiera bbcode (img]
jeśli zawiera to potem dalej....
ale może się tak zdarzyć jak w przykladzie wyzej ze będzie 2 razy (img]
i wtedy potrzebuje ztablicowac oba i dalej...

Podkreślam ze tylko jeden text bo wyswietla sie opis serwera
kuknij na moja strone
http://www.mcservlist.com - to moze zrozumiesz o co mi chodzi
pmir13
Zmień preg_match na preg_match_all, usuń wszystko od linii 7 w dół i zamiast tego:
  1. if($url) {
  2. echo "<br /><br />zawiera<br />";
  3. foreach( $url1[1] as $go )
  4. echo $go."<br />";
  5. }
  6. else {
  7. echo "<br /><br />nie zawiera<br />";
  8. }
szmerak
Jeeest wkońcu dziła biggrin.gif:D
Dzięki wielkie jesteś geniuszem biggrin.gif
plej
ehh widzisz złe cię zrozumiałem na początku:) dopiero jak napisałeś dokładnie to skumałem ehh ale już masz rozwiązanie:)
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.