DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > Regular expression i htaccess
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Regular expression i htaccess regex, PCRE, POSIX, upotreba Apache .htaccess , mod_rewrite

Odgovori
 
Alati teme Način prikaza
Staro 16. 07. 2014.   #1
Bojsi
član
Certified
 
Datum učlanjenja: 24.01.2007
Poruke: 92
Hvala: 1
802 "Hvala" u 15 poruka
Bojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished road
Question PHP: Kada parser da "stane"

Pozdrav,

Imam jedan nadam se trivijalan problem. Izvinjavam se sto nisam mogao da smislim bolji naslov :(

Potrebno mi je da prodjem kroz sledeci string (uz pomoc PHP-a) i izdvojim kompletan tag:

Kôd:
<php:page>
    <php:button>Test</php:button>
</php:page>
Odmah mi je na pamet palo sledece resenje:

Kôd:
$patterns[] = "|\<php:(.*?)\>(.*?)\</php:(.*?)\>|e";		
$replaces[] = "\$this->createControl(\"$1\", \"$2\");";

return preg_replace($patterns, $replaces, $data);
Naravno, ono ne radi jer ce izvuci <php:page> a zavrsiti sa </php:button>

Da li mogu nekako da "fiksiram" drugu polovinu izraza (zatvaranje taga), da $3 mora da bude jednak $1 da bi stao sa parsiranjem, tako da stane tek kada opet naidje na </php:page>.

Mozda mogu da drugacije uradim i "izvucem" posebno button, page itd. ali se nadam da moze bolje (a i da naucim za kasnije).

Nadam se da sam dobro objasnio,

Hvala
Bojsi je offline   Odgovorite uz citat
180 članova zahvaljuje Bojsi za poruku:
aatavaolens, achelmeyerneilk, aczapiewskshain, aeharwardlaur, aennimancarm, aettermanmaudl, aionscalzconc, allen4jim, anorthfacemens, ardgraafwilfo, areraodel, aringascarl, arussianbran, asakamakimarc, aschoonovemaked, atyraanis, bapplebattery, brdvenablerayfo, budblak, celebritybrautk, cellocchiwino, cfacecheap, cfakecoach, cheapestcheapes, christianchrist, christianonsale, clgroschmurie, crygaliciazache, cstorecanada, ctarrickdied, dnhardwmrei, dokedziersrosen, dorflesnersalva, dswhiddendema, dyejidemcki, eabuechersophi, eangeruth, ebeisermarq, econeclar, edressesgreen, egressettfavi, ejerseynfl, emathiesokenn, emcqueenanto, emergelhous, encasteranto, enereebthom, ephonesbuy, erisselrosc, ershauerbric, esbissonetulyss, eskuhlemarco, fcheapfitsole, fhrentfrokhad, fnarufsabri, fuppfide, ggallagamerle, haughbobb, hhirschmabarr, hneprchalvale, hschherb, iaidimarc, iiantanidamarcp, iizzisamo, imandarinoveola, inejennieroxan, inorrixdarr, ioltmeierlynd, ionpanfilprest, istriblingmoshe, iyuriciclave, jnayjaso, jumijaim, kbierskiaria, kdlakrick, kdubykmajor, kelambkaruth, kmcvickermarj, ksaajokuthere, ktrackeisid, kwinskiiren, larholburt, lclachlandust, ldiellobryo, lemizelleshav, lemosellerobbi, ljagiellovinc, lmesserlymisty, locellelli, lriedldonn, luckwaltenels, meistmaikl, metwmper, meymeri, mlbaumrosse, mnamark, montclarmoncler, nbrabantarma, ncabeceiramilto, ncarpinonumb, nenningmick, nesimankricki, neveningparty, ngreenbackmarti, nielneversnatha, nieningshan, nincenorah, nkallenbemaur, nnvalentasun, norbinshan, nramanyjule, nsinapinkthoma, nsveentreva, ntasklandruper, nurdinmitc, nwiegandkatr, nydencesa, obertoerro, ocintoyongs, ofashionwigs, oiezarconepearl, okristoffflor, orangnowshaun, oronomark, ottleroehugo, pcheapface, pdekenipproger, piehlphilr, pioterpenflor, prdpala, qlspraquemars, racovaratimi, raynormarl, refnerrein, renmorebufo, rheldermajuli, riggeralen, rkunaroyal, rlamryan, rlaverestep, rldogarrreyna, rlingeriebuy, rnnagaminewilbu, rnslerwend, rochnersungb, rtoontivernorbe, rumbersjoey, rverydresses, saccorsiamos, sceeashcons, sdressesdresses, selmasnico, shelmsdarr, sosephsenbust, sowsamd, stwiesarie, tarnetcalv, taslattershaq, tatttobi, teastali, tewittgran, tezabielskyevet, tinregestevalen, tizattsolo, tmiretedad, tnhewittmarlo, tolyottjero, traditionaltrad, trestimm, tscristedema, udiscountbags, ueesaunanni, vienvert, wacheweloy, wkertaiwtiffany, yntyno, yrleyange, ytelajoyetonet, yusleycedr, zerganzazaneb
Staro 16. 07. 2014.   #2
Br@nkoR
banned
Professional
 
Avatar Br@nkoR
 
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
Br@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoro
Default

http://php.net/manual/en/regexp.refe...references.php
http://www.regular-expressions.info/backref.html
__________________
Don't look at me; I'm lost too.
“If you can't dazzle them with brilliance, baffle them with bul*s**t.”
Br@nkoR je offline   Odgovorite uz citat
161 članova zahvaljuje Br@nkoR za poruku:
Staro 17. 07. 2014.   #3
Bojsi
član
Certified
 
Datum učlanjenja: 24.01.2007
Poruke: 92
Hvala: 1
802 "Hvala" u 15 poruka
Bojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished road
Default

Hvala druze. Sad razumem koncept. Iz nekog razloga moj kod nece da radi ako prosto stavim:

Kôd:
$patterns[] = "|\<php:(.*?)\>(.*?)\</php:\1\>|e";
ali sada bar znam sta da trazim.
Bojsi je offline   Odgovorite uz citat
165 članova zahvaljuje Bojsi za poruku:
Staro 17. 07. 2014.   #4
Bojsi
član
Certified
 
Datum učlanjenja: 24.01.2007
Poruke: 92
Hvala: 1
802 "Hvala" u 15 poruka
Bojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished road
Default

Nesto ne ide. Ne znam gde gresim, nista mi izraz ne nalazi. Mozda neko zna gde gresim. Vec je kasno pa se nadam da nisam zaboravio i ono sto sam znao.

PHP kôd:
$s '<php:page><php:button>Test</php:button></php:page>';

$patterns[] = "|\<php:(.*?)\>(.*?)\</php:\1\>|s";        
$replaces[] = "X";

echo 
preg_replace($patterns$replaces$s); 
Bojsi je offline   Odgovorite uz citat
150 članova zahvaljuje Bojsi za poruku:
Staro 17. 07. 2014.   #5
Br@nkoR
banned
Professional
 
Avatar Br@nkoR
 
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
Br@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoroBr@nkoR će postati "faca" uskoro
Default

PHP kôd:
$patterns[] = "|\<php:(.*?)\>(.*?)\</php:\\1\>|s"
ili
PHP kôd:
$patterns[] = '|\<php:(.*?)\>(.*?)\</php:\1\>|s'
ili
PHP kôd:
$patterns[] = "|\<php:(.*?)\>(.*?)\</php:\g1\>|s"
\1 unutar navodnika (") postaje 1
__________________
Don't look at me; I'm lost too.
“If you can't dazzle them with brilliance, baffle them with bul*s**t.”
Br@nkoR je offline   Odgovorite uz citat
147 članova zahvaljuje Br@nkoR za poruku:
Staro 17. 07. 2014.   #6
Bojsi
član
Certified
 
Datum učlanjenja: 24.01.2007
Poruke: 92
Hvala: 1
802 "Hvala" u 15 poruka
Bojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished road
Default

Hvala, to je to. Nikad ne bih provalio.

Hvala jos jednom.
Bojsi je offline   Odgovorite uz citat
161 članova zahvaljuje Bojsi za poruku:
Staro 22. 09. 2014.   #7
Bojsi
član
Certified
 
Datum učlanjenja: 24.01.2007
Poruke: 92
Hvala: 1
802 "Hvala" u 15 poruka
Bojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished roadBojsi is on a distinguished road
Default

Potrebna mi je jos jedna pomoc ako moze, problem se nadovezuje:

Pravim neki mini template sistem (za sopstvene potrebe) gde imam tagove u stilu:

Kôd:
<php:ime_kontrole>...</php:ime_kontrole>
Kada se procita ovo ime_kontrole, ja izrenderujem tu kontrolu i onda dalje obradjujem njene child kontrole.

Unutar tagova za kontrolu, mogu se nalaziti i tagovi za svojstva (property).

Ceo primer:

Kôd:
<property name="title">Ovo je pravi naslov</property>
<php:button>
    <property name="title">Ovo je pogresan naslov</property>
    <property name="styleClass">test</property>
</php:button>
Kao sto vidite, imam jednu ugnjezdenu kontrolu (button) i ona opet ima svoje propertije.

I koristim sledeci (PHP) kod da obradim propertije:

PHP kôd:
$patterns[] = "|\<property name=\"(.*?)\"\>(.*?)\</property\>|e";        
$replaces[] = "\$this->setProperty($1, \"$2\");";        

$value preg_replace($patterns$replaces$value); 
Medjutim, ovde opet nastaje problem jer ce mi obrada "pokupiti" i propertije unutar button kontrole, sto je nepozeljno. Dakle, zelim da parser ne "zalazi" u <php:ime_kontrole> tagove (bilo kog nivoa).

Verovatno treba da iskljucim grupu koju koristim za "citanje" tagova za kontrole:

Kôd:
"|\<php:(.*?)\>(.*?)\</php:\\1\>|e";
ali ne znam gde to da postavim?

Hvala jos jednom.
Bojsi je offline   Odgovorite uz citat
126 članova zahvaljuje Bojsi za poruku:
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 12:27.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.