praegune kellaaeg 19.06.2025 21:56:59
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
BullDoze
HV kasutaja

liitunud: 01.03.2005
|
28.01.2010 07:12:03
preg_match_all ja mitme realine string. |
|
|
Tere
Mul on üks mitme realine fail, kust oleks vaja kätte saada teatud mustri alusel sealt mingid read. Uurisin erinevaid meetodeid, kuidas seda teha ja leidsin sellise funktsiooni nagu preg_match_all, katsetasin teada veits, aga tuli välja, et kui string sisaldab mitut rida, siis ta ei tööta, kui kogu jutt on ühe rea peal, siis töötab nagu vaja.
Kood mis ei tööta:
$string = '00-00-01 00-00-02
00-00-03 00-00-04 00-00-05';
preg_match_all('/00-00-02(.*)00-00-05/', $string, $valja);
for($i=0; $i < count($valja); $i++){
print_r($valja[$i]);
} |
Kas ta ei peagi nii töötama või teen ma midagi valest? Kui stringi väärtus oleks ühel real, siis töötab.
|
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
14 |
|
tagasi üles |
|
 |
XYZ
HV Guru

liitunud: 05.11.2001
|
28.01.2010 09:15:39
|
|
|
Otsitav string ise mitmel real lähteandmeis? Sel juhul on sinna sisse tekkinud reavahetusmärke ja see ei ole sama string mida sa otsid...
Võimalik on kuskil puhvris koristada minema kõik reavahetused ja saadud suurest stringist/baitmassiivist otsida alamstringi, s.t. sinu otsitavat stringi. See on üks võimalus asjale lähenemiseks.... Oleneb tegelikust eesmärgist, kas see on üldse rakendatav.
|
|
Kommentaarid: 81 loe/lisa |
Kasutajad arvavad: |
   |
:: |
3 :: |
12 :: |
56 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
28.01.2010 10:04:25
|
|
|
Selle jaoks on olemas spetsiaalsed lisaparameetrid selle otsingustringi järel.
preg_match_all('/00-00-02(.*)00-00-05/s', $string, $valja);
/s annab . märgile reavahetuste matchimise supporti, /i annaks tõusutundetuse (qwe otsimisel klapib ka QWE) ja neid on veel.
http://www.regular-expressions.info/modifiers.html siin kirjas ka et /s paneb single line modesse ehk käsitletakse kogu stringi nagu ühe reana.
Üks lisa näpunäide veel mida võid juba teada või võid ka mitte.
Kui sul on selline string
$string = '00-00-02 tekst 00-00-05 00-00-05';
Ja sa tahad sealt saada sealt ainult osa "tekst" mitte "tekst 00-00-05" siis (.*) asemel tuleb kasutada (.*?) mis muudab regexpi mitteahneks ehk lõpetatakse esimese matchi peale.
Ilma selleta näiteks preg_replace('/<span(.*)>(.*)<\/span>/', '','<span>t</span>plapla<span>e</span>') annab tühistringi kuigi esmase hooga loodaks tagasi saada "plapla". Tööle hakkaks oodatult alles nii: preg_replace('/<span(.*?)>(.*?)<\/span>/', '','<span>t</span>plapla<span>e</span>')
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
BullDoze
HV kasutaja

liitunud: 01.03.2005
|
28.01.2010 19:22:48
|
|
|
Suured tänud teile! /s oli tõesti see mis oli puudu ja ? aitas ülesannet lõplikult lahendada.
|
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
14 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|