Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrazenie regularne, wyciagniecie ciagu z ciagu w odpowiednim formacie z $
changer
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


Witam

mam pytanie

z dłuuugiego ciągu tekstowego: zmienna $txt


chce znalezc pierwszy ciąg który wystąpi w takim formaci w tekscie:

"from $cyfrancyfracyfracyfracyfra" czyli np. "from $2345"

znajduje ciąg from $tylkocyfryod2domax5cyfr ze zmiennej txt



co robie nie tak?

preg_match_all("/^from $[0-9]{2,5}$/", "$txt", $out, PREG_PATTERN_ORDER);




czy ten dolar za from przeszkadza? niestey w tym ciagu wystepuje on jako znak waluty.

prosze o pomoc
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 21)
TheSnake
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 10
Dołączył: 5.06.2009

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


przed dolarem \
Go to the top of the page
+Quote Post
changer
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


dzięki
ale dalej cos jest nie tak (IMG:style_emoticons/default/sad.gif)




echo $out;

daje wynik "Array"
Go to the top of the page
+Quote Post
Quantum
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


bo rezultatem jest tablica, daj print_r($out) zamiast echo.
Go to the top of the page
+Quote Post
changer
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


dalej nic z tego
wynik:


Array ( [0] => Array ( ) )




---------------

preg_match_all("/^from \$[0-9]{2,5}$/", $txt, $out, PREG_PATTERN_ORDER);
print_r($out);


zebysmy sie dobrze zrozumieli
potrzebuje po prostu wyciagnac cene do jakiejs zmiennej int (liczba min dwucyfrowa)

w ciagu $txt szuka ciągu "from \$jakasliczba" np. ...from $2345...
i wyciaga 2345 do jakiejs zmiennej
jesli jakasliczka jest jedno cyfrowa szuka dalej takiego samego ciagu
gdzie bedzie liczba dwucyfrowa


[0-9]{2,5}

Ten post edytował changer 28.02.2010, 13:01:45
Go to the top of the page
+Quote Post
Quantum
post
Post #6





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


Cytat
  1. preg_match_all("/^from \$[0-9]{2,5}$/", "$txt", $out, PREG_PATTERN_ORDER);
  2. print_r($out);


źle podstawiona zmienna w 2 argumencie, usuń cudzysłowy

Ten post edytował sniffer32 28.02.2010, 12:48:05
Go to the top of the page
+Quote Post
changer
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


dalej ten sam bład (IMG:style_emoticons/default/sad.gif)

jak mozesz zerknij na moj post o 1 wyzej
poprawilem bo sam sie zamotalem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Quantum
post
Post #8





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1.  
  2. $txt = '... ... from $23 . . .. ... from $112 .. .. from $1';
  3.  
  4. preg_match_all('/from \$([0-9]{2,5})/', $txt, $out, PREG_PATTERN_ORDER);
  5.  
  6. print_r($out[0]); // Array ( [0] => from $23 [1] => from $112 )
  7. print_r($out[1]); // Array ( [0] => 23 [1] => 112 )
  8.  


Jeżeli chcesz dostać tylko tablicę zawierającą dane razem z "from $" - usuń nawiasy z wzorca.

Ten post edytował sniffer32 28.02.2010, 14:21:16
Go to the top of the page
+Quote Post
changer
post
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


DZIĘKI WIELKIE, DZIAŁA (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif)

mam wynik:

Array ( [0] => Array ( [0] => from $730 [1] => from $730 [2] => from $4797 [3] => from $645 [4] => from $645 [5] => from $682 [6] => from $695 [7] => from $731 [8] => from $755 [9] => from $791 [10]....


jak mozesz podpowiedz mi jeszcze

jak teraz zapisac

3 ceny
czyli

from $12 [1]
from $1234 [4]
from $1234 [5]


do zmiennych INT odpowiednio bez from $

$cena1
$cena2
$cena3

Ten post edytował changer 28.02.2010, 14:39:21
Go to the top of the page
+Quote Post
TNT
post
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 2
Dołączył: 14.04.2007

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


  1. $cena1 = (int) substr(arr[1], 6);
Go to the top of the page
+Quote Post
changer
post
Post #11





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


Parse error: syntax error, unexpected '[' in /home/.....
Go to the top of the page
+Quote Post
TNT
post
Post #12





Grupa: Zarejestrowani
Postów: 41
Pomógł: 2
Dołączył: 14.04.2007

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


Dałem arr[1] bo nie wiedziałem jaka zmienna trzyma arraya.
  1. $cena1 = (int) substr($out[1], 6);
Go to the top of the page
+Quote Post
Quantum
post
Post #13





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


po co tworzyć nowe zmienne ? nie lepiej zachować je w jednej tablicy ? ($out[1]).

konwersja na typ INT:

  1.  
  2. $txt = '... ... from $23 . . .. ... from $112 .. .. from $1 .... from $16';
  3.  
  4. preg_match_all('/from \$([0-9]{2,5})/', $txt, $out);
  5.  
  6. foreach ($out[1] as &$cena)
  7. {
  8. $cena = (int) $cena;
  9. }
  10.  
Go to the top of the page
+Quote Post
changer
post
Post #14





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


ahhh, "zmeczenie materialu" chyba juz mam (IMG:style_emoticons/default/biggrin.gif)
----------------------------------------------------------------------


preg_match_all('/from \$([0-9]{2,5})/', $strona2, $out, PREG_PATTERN_ORDER);

print_r($out[1]);

// wynik Array ( [0] => 730 [1] => 730 [2] => 4797 [3] => 645 [4] => 645 [5] => 682 [6] => 695 [7] => 731 [8] => 755 [9] => 791 [10] => 838 [11] => 839 [12] => 909 [13] => 1110 [14] => 2596 [15] => 4629 [16] => 4868 )

$cena1 = (int) substr($out[1], 6);
$cena2 = (int) substr($out[2], 6);
$cena3 = (int) substr($out[3], 6);
$cena4 = (int) substr($out[4], 6);
$cena5 = (int) substr($out[5], 6);

echo "$cena1";
echo "$cena2";
echo "$cena3";
echo "$cena4";
echo "$cena5";

//wynik 00000

czemu?
Go to the top of the page
+Quote Post
Quantum
post
Post #15





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


Cytat
// wynik Array ( [0] => 730 [1] => 730 [2] => 4797 [3] => 645 [4] => 645 [5] => 682 [6] => 695 [7] => 731 [8] => 755 [9] => 791 [10] => 838 [11] => 839 [12] => 909 [13] => 1110 [14] => 2596 [15] => 4629 [16] => 4868 )

$cena1 = (int) substr($out[1], 6);


dostajesz 0 i prawidłowo (IMG:style_emoticons/default/smile.gif) TNT dał rozwiązanie, w tym przypadku najgorsze z możliwych, nie musisz zamieniać tekstu "from $" gdy masz już czystą liczbę.

Cytat
$cena1 = (int) substr($out[1], 6);
$cena2 = (int) substr($out[2], 6);
$cena3 = (int) substr($out[3], 6);


Tablica $out ma tylko 2 elementy, odwołuj się $out[1][klucz] i przeczytaj mojego poprzedniego posta.

Ten post edytował sniffer32 28.02.2010, 15:10:20
Go to the top of the page
+Quote Post
TNT
post
Post #16





Grupa: Zarejestrowani
Postów: 41
Pomógł: 2
Dołączył: 14.04.2007

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


Cytat(sniffer32 @ 28.02.2010, 15:08:12 ) *
TNT dał rozwiązanie, w tym przypadku najgorsze z możliwych, nie musisz zamieniać tekstu "from $" gdy masz już czystą liczbę.

Hehe dzięki za komplement (IMG:style_emoticons/default/winksmiley.jpg) Dopiero raczkuję w php (IMG:style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
changer
post
Post #17





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


mam teraz


preg_match_all('/from \$([0-9]{2,5})/', $strona2, $out, PREG_PATTERN_ORDER);

print_r($out[1]);

foreach ($out[1] as &$cena)
{
$cena = (int) $cena;
}


//blad
Parse error: syntax error, unexpected '&', expecting T_VARIABLE or '$' in /home.....

czy mogbys mi dokladniej podpowiedziec

jak nie stosujac nowych zmiennych
wyswietlic np echem "piątą cenę"
Go to the top of the page
+Quote Post
Quantum
post
Post #18





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


@TNT

nie no, nie ma sprawy (IMG:style_emoticons/default/biggrin.gif)

@changer

jeżeli tak bardzo upierasz się przy możliwości odwoływania się w stylu $cena1, $cena2.. to proponuje bardziej elastyczny sposób, niż wpisywanie ręcznie wszystkich zmiennych.

  1. foreach ($out[1] as $key => $val)
  2. {
  3. ${'cena'.($key+1)} = (int) $val;
  4. }


ile cen by nie znalazło, przypisze je automatycznie poczynając od $cena1 i skonwertuje na liczbę całkowitą.

Ten post edytował sniffer32 28.02.2010, 15:28:47
Go to the top of the page
+Quote Post
changer
post
Post #19





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


znaczy sie jesli mozna sie obejsc bez zmiennych typu $cena1 $cena2 to ok (IMG:style_emoticons/default/smile.gif)

tylko w jaki sposob je wyswietlic np echem np piątą wartost z array stosujac $out[1]klucz ? tzn jak dokladnie
Go to the top of the page
+Quote Post
Quantum
post
Post #20





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1. echo $out[1][5];


kompletne podstawy podstaw, przeczytaj jakiś szybki kurs php, żeby przynajmniej składnie języka poznać. (IMG:style_emoticons/default/winksmiley.jpg) bez tego wszystko będzie jak "czarna magia".

Ten post edytował sniffer32 28.02.2010, 15:27:58
Go to the top of the page
+Quote Post
changer
post
Post #21





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.06.2009

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


mam jeszcze jeden problem

mam taki ciąg html w zmiennej $txt



....

<tr><td id="FlightTxt">




<font color="black">











<b>Roundtrip: </b>






<font size="3" class="SHL"><a class="CursorHand" onclick="java script:FD(0,'P','-20573',0,23,'2')" id="A5080_16"><b>$677.80</b></a></font>
&nbsp;






</font>


</td></tr>
....




potrzebuje wyciągnać z tego w tym przypadku 677.80



zapis:

preg_match_all('/<td id="FlightTxt">.*\$([0-9]{2,6})/', $txt, $out, PREG_PATTERN_ORDER);

nie dziala (IMG:style_emoticons/default/sad.gif)
Proszę o pomoc

Ten post edytował changer 28.02.2010, 19:35:08
Go to the top of the page
+Quote Post
Quantum
post
Post #22





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


spróbuj tak '/<font size="3" class="SHL"><a class="CursorHand".*><b>\$([0-9.]+)<\/b><\/a><\/font>/'
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:59