Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenie regularne
szczabik
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Czemu takie wyrażanie zawraca mi w tablicy dwa razy 13 skoro tylko raz występuje ?
  1. <?php
  2. $tekst = 'test test <km>13</km> tetet tet';
  3. $text = preg_match('#<km>(.*?)</km>#si', $tekst, $matches);
  4. print_r($matches);
  5. ?>


Ten post edytował szczabik 29.04.2009, 19:56:29
Go to the top of the page
+Quote Post
gulldarek
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 15
Dołączył: 13.09.2003
Skąd: London

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


$matches[0] zwraca ci znaleziony ciag ( <km>13</km> ), a $matches[1] konkretny fragment ( 13 ). <km> przegladarka potraktowala jako html, dlatego nie widzisz.

Z dokumentacji:

matches

If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.

http://pl.php.net/preg_match

Ten post edytował gulldarek 29.04.2009, 20:13:13
Go to the top of the page
+Quote Post
szczabik
post
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Dzieki ale jak zrobić zeby dodawało mi do bazy same liczby bo na chwile obecną dodaje mi tak
  1. <?php
  2. $te = '<km>231321</km>';
  3. $te2 = '<km>231</km>';
  4.  
  5. $text = preg_match_all('#<km>(.*?)</km>#si', $te, $matches);
  6. $text1 = preg_match_all('#<km>(.*?)</km>#si', $te2, $matches1);
  7. $wynik = array_merge($matches, $matches1);
  8. print_r($wynik);
  9. $ile = count($wynik);
  10. for($rzad = 0;$rzad < $ile; $rzad++){
  11. for($kolumna = 0;$kolumna < 1; $kolumna++){
  12. $result = mysql_query("INSERT INTO ".DB_KM." (news_id, wartosc) VALUES ('".$r['news_id']."', '".$wynik[$rzad][$kolumna]."')");
  13. }
  14. }
  15. ?>


I w bazie mam tak
<km>231</km>
231321
<km>231321</km>
231

I teraz pytanie jak zrobić by dodawało tylko wartosci bez tagu <km> ? Ma ktoś jakis pomysł ?
Tablica wygloda tak
Array ( [0] => Array ( [0] => 231321 ) [1] => Array ( [0] => 231321 ) [2] => Array ( [0] => 231 ) [3] => Array ( [0] => 231 ) )

?

Ten post edytował szczabik 30.04.2009, 13:55:55
Go to the top of the page
+Quote Post
PawelC
post
Post #4





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


np pętlą foreach:
  1. <?php
  2. foreach($matches1 as $key)
  3. {
  4. // zapytanie
  5. }
  6. ?>


Ten post edytował ExPlOiT 30.04.2009, 14:46:00
Go to the top of the page
+Quote Post
szczabik
post
Post #5





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


No tak ale ja połączyłem dwie tablice w jedną. I jest to tablica dwuwymiarowa
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 Aktualny czas: 22.08.2025 - 05:33