|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
| autor |
|
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
07.10.2009 16:37:49
php: regulaaravaldis |
|
|
Length 3000 mm 5 pcs
kuidas sellest stringist saaks kätte nüüd 3000 ja 5? neid tühikuid võib olla ka stringi alguses ning lõpuls. sõnade keskel võib kah erinevalt olla tühikuid!
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
07.10.2009 18:24:20
|
|
|
| php:
|
$text = "Length 3000 mm 5 pcs"; // '\s*' - 0 või rohkem tühikut/tabi/vms // '\s+' - 1 või rohkem tühikut/tabi/vms // '[0-9]+' - 1 või rohkem numbrit vahemikus 0..9 preg_match('/^ \s* Length \s+ ([0-9]+) \s+ mm \s+ ([0-9]+) \s+ pcs \s* $/x', $text, $matches); echo $matches[1]; // 3000
|
_________________ Mõistus otsas? Pane pinusse... |
|
| Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
| tagasi üles |
|
 |
Absona
Lõuapoolik

liitunud: 17.09.2008
|
07.10.2009 18:39:35
|
|
|
Kunagi sai C# teha üks funktsioon (puhas stringi töötlus), mis otsib tekstis vajalikke stringe ülesse. Natukene ümber nurga tegemine oli (saab ka lihtsamini regulaaravaldisi kasutades (tol aeg ei osanud veel regulaaravaldisi kasutada) aga see ei aita alati kui tekst on muutuv).
Kood siis selline (C#'is ja ei viitsi PHP'le ümber teha):
public static string[] OtsiStringi(string strAlusta, string strLopeta, string strAllikas,
bool kaasaarvatudAlusta, bool kaasaarvatudLopeta)
{
string[] tulemused = { "", "" };
int iIndeksAlgusest = strAllikas.IndexOf(strAlusta);
if (iIndeksAlgusest != -1)
{
if (kaasaarvatudAlusta)
iIndeksAlgusest -= strAlusta.Length;
strAllikas = strAllikas.Substring(iIndeksAlgusest
+ strAlusta.Length);
int iLopeta = strAllikas.IndexOf(strLopeta);
if (iLopeta != -1)
{
if (kaasaarvatudLopeta)
iLopeta += strLopeta.Length;
tulemused[0] = strAllikas.Substring(0, iLopeta);
if (iLopeta + strLopeta.Length < strAllikas.Length)
tulemused[1] = strAllikas.Substring(iLopeta + strLopeta.Length);
}
}
else
{
tulemused[1] = strAllikas;
}
return tulemused;
}
|
Ehk sinu vajaduse järgi näeks asi selline välja:
private string allikas = "Length 3000 mm 5 pcs";
public void Otsi()
{
string[] otsiMM = OtsiStringi("Length ", " mm ", allikas, false, false);
var MM = otsiMM[0]; // Tulemus: MM = 3000
string[] otsiPCS = OtsiStringi("Length " + MM + " mm ", " pcs", allikas, false, false);
var PCS= otsiPCS[0]; // Tulemus: PCS = 5
}
|
või
private string GetMM
{
get {
string[] otsiMM = OtsiStringi("Length ", " mm ", allikas, false, false);
return otsiMM[0]
}
}
private string GetPCS
{
get {
string[] otsiPCS = OtsiStringi("Length " + GetMM + " mm ", " pcs", allikas, false, false);
return otsiPCS[0];
}
}
|
Ja niimoodi saab igatepidi mängida (paned tsüklisse: otsib ülesse-->lisad listi-->asendad leitud sõna-->otsib uue sõna, jne).
_________________ Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid.
viimati muutis Absona 07.10.2009 18:44:12, muudetud 2 korda |
|
| Kommentaarid: 11 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
0 :: |
8 |
|
| tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
07.10.2009 18:44:49
|
|
|
Pole eriti regulaar avaldistega kursis ja alles õpin neid, kuid midagi sellist peaks sulle sobima. Siin ei tohiks segada ka see, kui onveel eespool või tagapool sõnu.
$avaldis=" Length 30045 mm 587 pcs ";
if(ereg ("(Length)( *)([0-9]*)( *)(mm)( *)([0-9]*)( *)(pcs)", $avaldis, $regs)){
echo "Lenght ".$regs[3]." mm ".$regs[7]." pcs";
} |
_________________
 |
|
| Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
07.10.2009 20:27:22
|
|
|
| nene kirjutas: |
| php:
|
$text = "Length 3000 mm 5 pcs"; // '\s*' - 0 või rohkem tühikut/tabi/vms // '\s+' - 1 või rohkem tühikut/tabi/vms // '[0-9]+' - 1 või rohkem numbrit vahemikus 0..9 preg_match('/^ \s* Length \s+ ([0-9]+) \s+ mm \s+ ([0-9]+) \s+ pcs \s* $/x', $text, $matches); echo $matches[1]; // 3000
|
|
kle viitsid seletada, mis seal täpselt tehakse? kuidas just see $matches oma väärtuse saab? ma krt vist ei saa neid regulaaravaldisi kunagi selgeks. mingit head tutoriali pole kah leidnud.
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
07.10.2009 20:37:20
|
|
|
Mina õppisin selle järgi, http://koduleht.eu/phpwiki/doku.php?id=regulaaravaldised üks normaalsemaid, mis näinud. Ennem seda lehte oli täiesti must maa, nagu müstika -kõik teevad, kuid mida teevad ei oska või ei taha keegi öelda. Nagu mingi maffia.
| tsitaat: |
| if(ereg ("(Length)( *)([0-9]*)( *)(mm)( *)([0-9]*)( *)(pcs)", $avaldis, $regs)) |
Esimene sõna Length sellele järgneb suva arv tühikuid teine numbrid üks kuni mitu jne..
$regs on masiiv, milles on otsitavad osad, vaja ainult õige sõna - number välja võtta.
Edit: proovisin oma koodi, kui lükkan sinna ikka täiesti suva teksti sisse selle sinu kirja, leitakse ilma probleemideta ülesse.
$avaldis="<table border=\"0\" style=\"float: left\">
<tr>
<td background=\"vasak.png\" width=\"180\" height=\"700\" style=\"margin: 0\"></td>
</tr>
</table>
<DIV style=\"position: absolute; left: 100px; top: 0px; z-index: 1\" >
<img src=\"kytt.gif\" border=\"0\" width=\"248\" height=\"244\" alt=\"\">
</DIV>
<DIV style=\"position: absolute; left: 400px; top: 50px; z-index: 1\" >
<img src=\"cstlogo.gif\" border=\"0\" width=\"411\" height=\"45\">
</DIV>
<DIV style=\"position: absolute; left: 80px; top: 465px; z-index: 2\" >
erg e Length 30045 mm 587 pcs rg g erg erg erger erg erg
<img src=\"hand1.gif\" border=\"0\" width=\"194\" height=\"238\">
</DIV>
<DIV style=\"position: absolute; left: 700px; top: 500px; z-index: 2\" >
<img src=\"hand2.gif\" border=\"0\" width=\"172\" height=\"122\">
</DIV>";
if(ereg ("(Length)( *)([0-9]*)( *)(mm)( *)([0-9]*)( *)(pcs)", $avaldis, $regs)){
echo "Lenght ".$regs[3]." mm ".$regs[7]." pcs";
} |
_________________
 |
|
| Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
wk
HV vaatleja
liitunud: 22.05.2007
|
08.10.2009 01:21:39
|
|
|
Kuna Sa eriti ei selgitanud, kui palju lähteandmed muutuvad, pakuksin sellise lahenduse, mis toimib ridadega, kus alul on mittenumbrid, siis numbrid, siis mittenumbrid siis jälle numbrid ja lõpuks jälle mittenumbrid. Kui mõni element siit pole kohustuslik või võib sisaldada numbreid, siis see ei toimi õigesti.
$text = "Length 3000 mm 5 pcs";
preg_match('/^\D+(\d+)\D+(\d+)\D+$/x', $text, $matches);
echo $matches[1]; // 3000
echo $matches[2]; // 5 |
_________________ Kõike hääd,
WK |
|
| Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
09.10.2009 00:26:49
|
|
|
Õpetustega on üldiselt nigelad lood. Eriti eesti keeles. Ka too ülalviidatud pole mu meelest just suurem asi - pealegi õpetab ta kasutama PHP ereg funktsioone, mille asemel on juba aastaid soovitatud kasutada preg (Perl Compatible Regular Expressions) funktsioone, mis on märksa võimalusterohkemad ja pealegi ka kiiremad.
Lisaks on regulaaravaldiste temaatika väga lai, alates lihtsatest failinimede mustritest *.txt mida mõistab enamik arvutikasutajaid, lõpetades regulaarsete keelte ja lõplike automaatide teooriaga, millest kirjutatakse ülikoolides teadustöid.
Kõige lihtsam on vast regulaaravaldisi õppida kui piirduda alustuseks väikse alamhulgaga, näiteks alljärgnevaga:
Iga regulaaravaldis koosneb lihtsümbolitest ja erisümbolitest.
Erisümboleid on meie lihtsas regulaaravadiste keeles viis: *, +, (, | ja ) - nende tähendusest allpool. Kõik ülejäänud on lihtsümbolid ja nemad tähistavad iseennast. Näiteks a tähistab tähte "a", b tähte "b" jne.
| tähistab valikut. Näiteks avaldisele jaan|mari vastavad kaks sõna: "jaan" ja "mari". Avaldisele 0|1|2|3|4|5|6|7|8|9 vastab suvaline number vahemikust 0..9.
() sulud tähistavad grupeerimist. Näiteks avaldisele k(e|u)s vastavad sõnad "kes" ja "kus". Avaldisele ninja(d|) vastavad sõnad "ninjad" ja "ninja".
* tähistab et talle eelnevat asja on suvaline arv. Näiteks avaldisele ha* vastavad sõnad "h", "ha", "haa", "haaa", "haaaa" jne. Avaldisele 0|1(0|1)* vastavad kahendsüsteemi numbrid "0", "1", "10", "11", "100"... õigupoolest kõikvõimalikud kahendsüsteemi numbrid.
+ tähistab et talle eelnevat asja on üks või rohkem. Näiteks avaldisele ab+a vastavad sõnad "aba", "abba", "abbba" jne. Avaldis pisi(kese|kene)+ on samaväärne avaldisega pisi(kese|kene)(kese|kene)* - mõlevale vastavad sõnad "pisikese", "pisikene", "pisikesekene", "pisikesekenekesekesekene" jne - kuid + märgi abil on saab avaldis lühemalt kirja.
Antud lihtsat keelt kasutades on võimalik kirja panna kõikvõimalikud regulaaravaldised. See pole küll alati kõige mugavam, aga võimalik. Muuhulgas saab kirja panna ka tolle avaldise, mis sobitub tekstiga "Length 3000 mm 5 pcs", kus 3000 ja 5 asemel võivad olla suvalised arvud ja ka tühikuid võib sõnade vahel olla rohkem kui üks:
Length +(0|1|2|3|4|5|6|7|8|9)+ +mm +(0|1|2|3|4|5|6|7|8|9)+ +pcs
Sellega peaksid regulaaravaldiste põhitõed selged olema. Siit pealt peaks andma juurde õppida veel kõiksuguseid erisümboleid, mis regulaaravaldiste kirjutamist hõlbustavad.
_________________ Mõistus otsas? Pane pinusse... |
|
| Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
| tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
09.10.2009 12:42:08
|
|
|
| tsitaat: |
| // '\s+' - 1 või rohkem tühikut/tabi/vms |
Ma proovisin seda oma näites
tühikute asemele panna, kuid ei toiminud. Kas kirjutasin kuidagi valesti? Muidu kui minu näites panna vahele tab, siis asi enam ei toimi, kuigi kes ikka kahe sõna vahele tabi paneb, kuid mine sa tea.
_________________
 |
|
| Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
tooming
HV vaatleja

liitunud: 19.03.2007
|
09.10.2009 15:00:01
|
|
|
| (0|1|2|3|4|5|6|7|8|9) - kas see on sama, mis (0-9) ?
|
|
| Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
| tagasi üles |
|
 |
linnumees
HV kasutaja
liitunud: 15.06.2005
|
10.10.2009 17:10:43
|
|
|
| Jah. Või õigemini siis ([0-9]).
|
|
| Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
| tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
12.10.2009 20:29:20
|
|
|
| andrusny kirjutas: |
| Ma proovisin oma näites \s+ tühikute asemele panna, kuid ei toiminud. |
Kui sa kasutasid ereg funktsiooni, siis väga vabalt ei pruugi see toetatud olla. Aga ereg on deprecated ning PHP 6-s hoopis eemaldatud - parem hoidu sellest.
_________________ Mõistus otsas? Pane pinusse... |
|
| Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
27.10.2009 02:21:15
|
|
|
ereg('^/', $url_path)
kuidas see preg_matchina välja näeks
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
ranel
HV Guru
liitunud: 28.02.2005
|
27.10.2009 03:14:50
Re: php: regulaaravaldis |
|
|
| keevitaja kirjutas: |
Length 3000 mm 5 pcs
kuidas sellest stringist saaks kätte nüüd 3000 ja 5? neid tühikuid võib olla ka stringi alguses ning lõpuls. sõnade keskel võib kah erinevalt olla tühikuid! |
see 3000 koha peal on alati neljakohaline ja 5 juures alati ühekohaline?
_________________ Mobiilne rehvivahetus Lõuna-Eestis ja rehvide tellimine üle Eesti. www.rsrehvid.ee 55 684 121 |
|
| Kommentaarid: 186 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
165 |
|
| tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
27.10.2009 09:50:08
|
|
|
| ranel, väga väga halb eeldus on see.
|
|
| Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
| tagasi üles |
|
 |
ranel
HV Guru
liitunud: 28.02.2005
|
27.10.2009 11:35:34
|
|
|
| mikk36 kirjutas: |
| ranel, väga väga halb eeldus on see. |
no ma küsin, kas on kui ongi, siis teeb see asja märksa lihtsamaks ju
_________________ Mobiilne rehvivahetus Lõuna-Eestis ja rehvide tellimine üle Eesti. www.rsrehvid.ee 55 684 121 |
|
| Kommentaarid: 186 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
165 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
27.10.2009 11:37:44
|
|
|
see esialgne probleem on ammu lahenduse saanud!
teab keegi kuidas saaks selle preg_matchina kirjutada?
ereg('^/', $url_path)
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
27.10.2009 11:56:37
|
|
|
keevitaja, täpselt sama ei sobi?
^ tähendab nii POSIX'is kui PCRE's stringi algust ja / ei ole spets sümbol nagu.
|
|
| Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
27.10.2009 12:56:14
|
|
|
hakkas karjuma jah... vaja nii, et kui string hakkb / siis teeme ühte, kui mitte, siis teist
$kala = (ereg()) ? 'dddd' : 'ffff';
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
27.10.2009 13:18:07
|
|
|
!^/!
#php freenode serveris alati abiks
|
|
| Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
27.10.2009 13:47:44
|
|
|
mis freenode?
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
27.10.2009 14:00:38
|
|
|
| irc.freenode.org
|
|
| Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
30.10.2009 23:08:52
|
|
|
no ei saa pihta...
$string1 = '/see/on/mingi/kataloog';
$string1 = '/see/on/mingi/kataloog/';
kuidas saaks nüüd sellise avaldise, et võtaks alati viimase kataloogi tagant ära? üritan midagi sellist, kuid saan error
$text = preg_replace("!(\/|([:word:]))$!", '', $text);
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
mark11
HV vaatleja
liitunud: 28.01.2006
|
31.10.2009 12:12:38
|
|
|
| print_r(preg_replace("@/\w+/?$@", "", array("/path/naa", "/path/lawl/"))); |
katseta.
üldiselt võiksid selle kõik pähe tuupida&aru saada: http://www.regular-expressions.info/ siis vast probleeme ei tule :p
ja kui sul pole vaja seda visuaalsel levelil teha, siis lihtsalt lõppu paned "/../"
| mikk36 kirjutas: |
!^/!
#php freenode serveris alati abiks |
pigem ikka #regex, seal on tõsised fanaatikud :p
|
|
| Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
| tagasi üles |
|
 |
laurik
HV vaatleja
liitunud: 30.01.2003
|
31.10.2009 13:29:24
|
|
|
| keevitaja kirjutas: |
no ei saa pihta...
$string1 = '/see/on/mingi/kataloog';
$string1 = '/see/on/mingi/kataloog/';
kuidas saaks nüüd sellise avaldise, et võtaks alati viimase kataloogi tagant ära? üritan midagi sellist, kuid saan error
$text = preg_replace("!(\/|([:word:]))$!", '', $text); |
Võibolla abiks dirname-funktsioon:
| echo dirname("/see/on/mingi/kataloog/"); |
See väljastab: /see/on/mingi
_________________ http://web.zone.ee/internetu/ |
|
| Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
31.10.2009 14:18:15
|
|
|
see asi siis peaks automaatselt faili path ja urli deectima... confi fail asub ühes kataloogis.. vaja eelmist kataloogi siis. kontrollitud windows xp masinas (xampp) ja zone tasulises. PHP 5.3
see if on just zone jaoks. seal ei pannud url_pathile slashi ette. kas seda saaks kuidagi targemini kah teha?
$file_path = dirname(__DIR__);
define('FILE_PATH', $file_path);
$tmp_file_path = str_replace('\\', '/', $file_path);
$tmp_url_path = $_SERVER['DOCUMENT_ROOT'];
$url_path = str_replace($tmp_url_path, '', $tmp_file_path);
if(!preg_match('!^/!', $url_path)) {
$url_path = '/' . $url_path;
}
define('URL_PATH', $url_path); |
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
laurik
HV vaatleja
liitunud: 30.01.2003
|
|
| Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
| tagasi üles |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
|
| Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
| tagasi üles |
|
 |
gynterk
HV kasutaja
liitunud: 17.01.2004
|
11.11.2009 02:26:51
|
|
|
To: keevitaja@31.10.2009 13:18
Defineeri, mis on sinu jaoks faili path ja url path? Minu arust on esimene täispikk tee konkreetse failine (ka failinimi) ja teine täispikk WWW url konkreetse failini (ka failinimi).
Ehk:
| php:
|
<?php # Meetod faili tegeliku asukoha, faili tegeliku asukoha kataloogi, URLi ja www asukoha (ei oska seda paremini nimetada) leidmiseks. # Tagastab massiivi. Kui tagastab masiivi [ false, false, false, false ], siis antud faili nt ei eksisteeri. function realPathUrl( $f ) { # Kui path on v2ljaspool docrooti, siis on url false. else return array( $rp, dirname( $rp ), ( ( $_SERVER[ "HTTPS" ] == "on" ? "https://" : "http://" ). $_SERVER[ "HTTP_HOST" ]. $m[ 1 ] ), $m[ 1 ] ); } list( $path, $dir, $url, $wwwpath ) = realPathUrl ( "test.php" ); ?>
|
|
|
| Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
30.05.2010 00:22:32
|
|
|
no see asi on võimatu...
tere\ma\vajalik
oleks vaja see vajalik kätte saada. ehk siis viimane sõna! ees võib rohkem või vähem kui kaks kah olla! ei pruugi üldse midagi olla!
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
30.05.2010 01:37:45
|
|
|
Kas kindlalt regexp vajalik ? Niisama substr($str, strrpos($str, '\\')) ei kõlba ?
Muidu preg_match('/^((.*\\)*)(.*)$/', 'tere\midagi\kusagil', $results) annab $results massiivis indeksisse 3 selle mida sa siis otsid.
Aga koodi loetavuse ja lihtsuse mõttes soovitaks ikkagi strrpos lähenemist kasutada, tagantpoolt viimast \ märki otsida on kiirem kui läbi regexp mootori tükeldada.
_________________ Upload.ee - eestimaine failiupload |
|
| Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
30.05.2010 12:19:50
|
|
|
see substr jättis viimase \ paika...
abiks hoopis end(explode('\\', $class_name));
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
30.05.2010 14:10:04
|
|
|
Mhmh, see substr jättis paika jah, parem variant oleks olnud function last($str) { $pos = strrpos($str, '\\'); if($pos === false) return $str; return substr($str, $pos); }
Või siis trim(substr($str, strrpos($str, '\\')), '\\') oleks ka sellest üleliigsest \'st lahti saanud.
Kui string on hästi pikk vms siis explode kasutamine tekitab liigset mälu kulu, kuna see tükeldab kogu stringi massiivi valmis ning hetkel kasutad sealt alati ainult viimast elementi.
Aga kui kindlalt ainult lühikeste stringidega tegu siis väga vahet pole, explode kasutamine koodi kirjutamise poolest kiirem/lühem.
_________________ Upload.ee - eestimaine failiupload |
|
| Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
| tagasi üles |
|
 |
matis
HV kasutaja

liitunud: 12.04.2004
|
|
| Kommentaarid: 65 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
61 |
|
| tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
28.10.2011 18:45:05
|
|
|
ma jälle vajaks abi, ehk keegi viitsib mulle visata mõne rea. oleks vaja email lahti lüüa: kasutaja, domeen ja ainult tipp domeen. ehk siis mina@mail.ee peaks andma vastuseks
mina
mail.ee
ee
ja kui aadress on mina@mingi.mail.ee , siis tuleks
mina
mingi.mail.ee
ee
|
|
| Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
| tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
29.10.2011 02:21:05
|
|
|
|
|
|
| Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
| tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
04.03.2012 20:26:35
|
|
|
Mis saab siis, kui on vaja leida suvalised märgid ja nende vahel mitmes kohas tühikud
Näide:
id="object (CJ_SWEETIE_TRAY_1) (1)" doublesided="false" model="2362" interior="0" dimension="0"
vaja kätte saada jutumärkide sisene osa
hetkel kasutan
| preg_match_all('/["](\S* *)["]/', $out[0][0],$out2); |
kuid see loeb ainult siis kui on kas täielikult ilma tühikuteta või tühikud on lõpus
_________________
 |
|
| Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
04.03.2012 23:51:52
|
|
|
Lõhnab XML-i parse'mise järgi sul see asi - äkki oleks mõistlikum mingit XML-i teeki selleks kasutada?
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
| Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
| tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
05.03.2012 01:06:48
|
|
|
Uurin, ei tulnud esmalt selle pealegi.
Edit: Tänud, asi osutus palju lihtsamaks kui arvasin.
_________________
 |
|
| Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
| tagasi üles |
|
 |
|