Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

replace stringa, tagovi "{" i "}" sa varijablom

[es] :: PHP :: replace stringa, tagovi "{" i "}" sa varijablom

Strane: 1 2

[ Pregleda: 4669 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.191.*



+1 Profil

icon replace stringa, tagovi "{" i "}" sa varijablom08.02.2009. u 18:37 - pre 185 meseci
Kako bih mogao nesto tipa ovako:

Code:
$query = "insert into users set username={username}"        
$search = array("{", "}");
$result   = array('"$','"');
$output  = str_replace($search, $result, $query);
echo $output;


I ne uradi kako treba replace, a htio bih npr da

{username} zamijeni sa $username, a $username = $_POST["username"];

ali...

Kako bih mogao nesto ovako uraditi?
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom08.02.2009. u 19:02 - pre 185 meseci
U PHP-u postoji neshto shto se zove interpolacija ili interpoliranje, i sve shto treba da uradish je da umesto tog {username} napishesh $username, kao promenljivu. I onda, ako je username bio npr. pera, kad output-ujesh taj upit, dobicesh: insert into users set username=pera. Ne treba ti nikakva obrada stringova i taj replace... Ali to vazhi samo ako ti je taj string pod dvostrukim navodnicima. Isti efekat mozhesh da dobijesh i standardnom konkatenacijom, koristeci bilo jednostruke ili dvostruke navodnike, npr. $query = 'insert into users set username=' . $username. Probaj...

PHP, za razliku od jednostrukih navodnika, uvek analizira stringove pod dvostrukim navodnicima u potrazi za promenljivama, kako bi njihove vrednosti bile "utisnute" u string...

btw Chini mi se da si pobrkao sintaksu INSERT i UPDATE upita...
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
93.86.144.*

Sajt: https://avramovic.info


+46 Profil

icon Re: replace stringa, tagovi { i } sa varijablom08.02.2009. u 23:46 - pre 185 meseci
Nisam baš najbolje razumeo ovo poslednje što si napisao:

Citat:
{username} zamijeni sa $username, a $username = $_POST["username"];


Ali ako hoćeš direktno tako u stringu da zameniš vrednosti sa vrednostima iz $_POST niza, možda da probaš ovako nešto:

Code:
//nesto kao sablon
$str = 'test = {test} i {test}';

//callback funkcija za preg_replace (dole)
function kolbek($matches){
    return (isset($_POST[$matches[1]])) ? $_POST[$matches[1]] : $matches[0];
}

//preg_replace sa callback funkcijom (kolbek)
$rez = preg_replace_callback("/{([a-zA-Z0-9]+)}/", "kolbek", $str);


//ispis rezultata
echo $str; //izvorni string $str
echo "<br />-------<br />";
echo $rez; //obradjeni string $str

?>

<form action="" method="post">
<p>Vrednost za {test}: <input type="text" name="test" /></p>
<p><input type="submit" value="Udri" /></p>
</form>


Konkretno u ovom primeru: Ako u $_POST nizu imaš definisan element "test", svako {test} u stringu $str će biti zamenjeno sa vrednošću tog elementa. U suprotnom se ništa neće promeniti (ostaje {test} u $str). To možeš izmeniti u funkciji "kolbek". Naravno, ako to ubacuješ u MySQL query, moraćeš da izmeniš funkciju "kolbek" kako bi filtrirao string koji vraća (sa mysql_real_escape_string() npr).
I da, ovaj regexp matchuje samo slova engleskog alfabeta i brojeve (/{([a-zA-Z0-9]+)}/).

btw. Nikola, može i INSERT sa SET.

[Ovu poruku je menjao Nemanja Avramović dana 09.02.2009. u 00:58 GMT+1]
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
147.91.216.*



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom09.02.2009. u 11:13 - pre 185 meseci
Citat:
Nemanja Avramović:
btw. Nikola, može i INSERT sa SET.

Tnx for the tip. ;)

edit: Sad mi pade napamet, vidim da sam bezveze pisao ovo o interpolaciji, mozhda tebi bash treba to ubacivanje promenljive u string (mozhda pravish neki template engine, otkud znam :)), probaj onda da taj efekat koji ti treba dobijesh npr. ovako:
Code:

$query = "insert into users set username = {username}"        
$output  = preg_replace('/\s*{(\w+)}\s*/', '$\1', $query);
echo $output;
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-7239.sa.bih.net.ba.



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom09.02.2009. u 13:19 - pre 185 meseci
Pozdrav, hvala na odgovorima..

Probao sam


$username = "test";
$query = "{username}";
echo $query;


Ali to ne radi, kao sto ste spomenuli u prvom postu..

Zatim probao i:

$query = "insert into users set username = {username}";
$output = preg_replace('/\s*{(\w+)}\s*/', '$\1', $query);
echo $output;

ne radi takodje..
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
79.101.69.*

Sajt: https://avramovic.info


+46 Profil

icon Re: replace stringa, tagovi { i } sa varijablom09.02.2009. u 14:12 - pre 185 meseci
Možeš da koristiš onaj moj gore način, samo umesto da iz $_POST niza promenljive izvlačiš iz nekog drugog niza koji ćeš sam pripremiti unapred.

Može i bez niza ali promenljive moraju biti globalne da bi bile dostupne unutar funkcije kolbek().

Kada bi nam rekao tačno šta pokušavaš da napraviš možda bismo mogli da budemo više od pomoći.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-7239.sa.bih.net.ba.



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom09.02.2009. u 16:37 - pre 185 meseci
Nisam probao onaj tvoj nacin iz razloga sto trebam praviti funkciju i sl, pa rekoh mozda moze na jednostavniji nacin. Sto se tice sta pokusavam, radim kroz XML, da pravim jednostavne sifarnike, da lagano mogu dodavati temeljne podatke i onda imam jedan file u okviru kojeg ucitavam XML file. I to sve obradujem kroz PHP. I sad imam ovako nesto.

<insert>INSERT INTO users SET username={username}</insert> primjer je ovaj query :)

I da mi je sad da nekako {username} zamijenim sa $username..

Eto, nadam se da je sad jasnije.. :)
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.dynamic.sbb.rs.

Sajt: keselj.xyz


+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom09.02.2009. u 17:06 - pre 185 meseci
Vidi sta ti odgovara .... Ako sam te dobro razumeo

echo str_replace('{username}', $username ,$query).'<br/>';
echo str_replace('{username}', '$username' ,$query);
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-4.sezampro.yu.



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom09.02.2009. u 17:29 - pre 185 meseci
Ajde probaj npr. ovako:
Code:

$zamena = array('username' => 'test');
$query = 'insert into users set username = {username}';

foreach($zamena as $key => $value) {
    $output = str_replace('{'.$key.'}', $value, $query);
}

echo $output;


Sad sam umesto onog $username = 'test', napravio niz u kome se kao indeksi nalaze imena promenljivih, a kao vrednost svakog elementa u nizu je ono sa chime zhelish da se u tom stringu $query ime te promenljive zameni. U taj niz sad mozhesh da "natrpash" josh kobminacija promenljiva - vrednost, kako bi posle te vrednosti bile ubachene umesto nekog dela tog glavnog stringa koji odgovara imenu te promenljive...

[Ovu poruku je menjao Nikola Poša dana 09.02.2009. u 18:56 GMT+1]
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-6346.sa.bih.net.ba.



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom10.02.2009. u 14:51 - pre 185 meseci
$zamena = array('username' => 'user');
$zamena = array('pwd' => 'pwd');

$query = 'insert into users set username = {username}, passowrd={pwd}';

foreach($zamena as $key => $value) {
$output = str_replace('{'.$key.'}', $value, $query);
}

echo $output;

to npr ne radi...
replace uradi passworda dok usernamea ne.. .
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom10.02.2009. u 15:42 - pre 185 meseci
Pa pogledaj shta si napisao, prvo si toj promenljivoj $zamena dodelio niz sa jednim elementom, pa si u sledecem koraku opet to ponovio, samo sa drugim vrednostima u nizu... :) Ta promenljiva (niz) je posle te druge dodele dobila drugu vrednost i vishe ne zna za onaj prvi niz. To je kao da si napisao npr. $x = 3; $x = 7;. Promenljiva $x sada ima vrednost 7, a ne 3.

Ne treba uopste da idesh sa vishe nizova, vec sve samo "trpaj" u taj jedan. Samo zameni ta prva dva reda sa:
Code:

$zamena = array('username' => 'user', 'pwd' => 'pwd');

Taj niz $zamena sad ima dva elementa (mozhe da ih ima kol'ko god hocesh), i sada ce ta foreach petlja "protrchati" kroz sve njih, pa ce indeksi i vrednosti tih elemenata biti uzete u obzir kad se bude radio str_replace()...
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.161.*



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom10.02.2009. u 19:42 - pre 185 meseci
Aha. Super, ali problem je to sto ja to obradujem kroz XML i nije mi bas jednostavno da ja formiram tako, jer npr. za username bi bilo:

"username => $_POST[username]"

nesto tako, sto bi bilo jako jako tesko da izvedem, dodavanje...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom10.02.2009. u 20:05 - pre 185 meseci
Ti u svakom trenutku mozhesh da dodash novi element u taj niz, npr. ovako: $zamena['username1'] = $_POST['username1'];.
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.168.*



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 07:29 - pre 185 meseci
da, ali kako to sve kroz PHP, ne znam kako bih to sredio, probacu..
hvala :;D

[Ovu poruku je menjao _CaRtMan_ dana 11.02.2009. u 13:40 GMT+1]
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.183.*



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 13:01 - pre 185 meseci
Btw.

Code:


    $zamena = array('username' => 'user', 'pwd' => 'pwd');
                                 
    $query = "{username} i ...  {pwd}";
    
foreach($zamena as $key => $value) {
        $output = str_replace('{'.$key.'}', $value, $query);
    }
                    
                    echo $output;


To mi zamijeni samo pwd ne i username...
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.dynamic.sbb.rs.

Sajt: keselj.xyz


+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 13:20 - pre 185 meseci
Probaj ovo , pa izvuci sam zakljucak u cemu je problem
Code:

$zamena = array('username' => 'user', 'pwd' => 'pwd');
                                 
    $query = "{username} i ...  {pwd}";
    
foreach($zamena as $key => $value) {
        echo str_replace('{'.$key.'}', $value, $query)."<br/>";
    }
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.183.*



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 13:36 - pre 185 meseci
Ne mogu tako. Zato sto mi treba kao $output neki koji ce biti query. A kad bi tako radio unutar foreach, unio bi vise puta u tabelu, sto nije prihvatljivo.
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.dynamic.sbb.rs.

Sajt: keselj.xyz


+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 13:45 - pre 185 meseci
Pa nisam ni mislio da to koristis , namera mi je bila da vidis sta se desava u petlji pa da sam izvuces zakljucak al vidim da ne ide ... predajem se ... resenje je
Code:

$zamena = array('username' => 'user', 'pwd' => 'pwd');
                                 
    $query = "{username} i ...  {pwd}";
    
foreach($zamena as $key => $value) {
        $query = str_replace('{'.$key.'}', $value, $query);
    }
                    
                    echo $query;
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.183.*



+1 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 16:17 - pre 185 meseci
hvala :) samo bih volio da skontam zasto je potrebno

$query = str_replace (kao sto je $query onaj string u kojem mijenjam) a nije $nesto pa kasnije echo $nesto (kod replacea)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: replace stringa, tagovi "{" i "}" sa varijablom11.02.2009. u 16:39 - pre 185 meseci
Vrlo je logichno...

Evo sad ti pishem za ono kako si ti hteo... U tom foreach-u, u prvom prolasku kroz petlju, f-ja str_replace() ce kao treci argument dobiti string $query, a rezultat te f-je ce biti upisan u string $output. Ali bitna stvar je da ce string $query ostati NEpromenjen! Njegova vrednost ce josh uvek biti: "{username} i ... {pwd}". Nakon prvog prolaska petlje foreach vrednost promenljive $output je "user i ... {pwd}". Kao shto vidish programski kod ipak nije preskochio zamenu '{username}' za 'user'. :) U sledecem i poslednjem prolasku kroz petlju, poshto niz $zamena ima samo dva elementa, f-ja str_replace() ce opet kao treci argument da koristi string $query, a njegova vrednost je opet "{username} i ... {pwd}". I ponovo ce rezultat biti upisan u promenljivu $output, a on ce ovog puta biti "{username} i ... pwd", jer se trenutno u petlji "vrti" taj drugi element niza.

Eto, nadam se da ti je sad jasno... :) A i sve bi ovo video da si probao onaj prvi primer koji ti je poslao beep...
 
Odgovor na temu

[es] :: PHP :: replace stringa, tagovi "{" i "}" sa varijablom

Strane: 1 2

[ Pregleda: 4669 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.