ugrás a tartalomhoz

Változó értékének behelyettesítése stringbe

teamtom · 2007. Ápr. 28. (Szo), 13.54
Kedves PHP Guruk,

azt tudom, hogy a duplaidézőjelbe írt sztringben megbújó változók értéke behelyettesítődik,
de mi van akkor, ha én a sztringemet egy függvényhívás eredményeképpen kapom?

Ez esetben a behelyettesítés nem megy végbe!

require_once('lib/mysql.php');

$mysql = new Mysql($server,$username,$password,$dbname);

$fullname = "lacafaca";
$password = "*ize*";

echo "Kedves $fullname! A regisztrációd sikerült! A jelszavad: $password."; // megtortenik a behelyettesites

echo "<br/>";

$txt = $mysql->doQueryToRow("select text from ".MYSQL_TABLE_TEXT." where title='regokmail'");

echo "$txt[0]"; // NEM tortenik meg a behelyettesites
hogyan lehet megoldani a (sztring)változóban kapott változók behelyettesítését?

Köszönettel: teamtom
 
1

{ }

Max Logan · 2007. Ápr. 28. (Szo), 14.31
Bár ebben a formában ennek nem sok értelme van:
echo "$txt[0]";
gondolom nem csak így pusztán lenne a dolog, hanem lenne még mellette string is.

Az echo-t lehet (és azt mondják, hogy jobb is) úgy használni, hogy nem összefűzöd a string-eket, hanem egy vesszővel választod el őket.

Tehát:
echo "szöveg első fele",$txt[0],"szöveg második fele";
Ha mindenképpen a string-be akarod tenni, akkor pedig így csináld:
echo "ez itt a string {$txt[0]} ez meg a string további része";
A lényeg, hogy a tömböt tedd { } jelek közé.
2

nem megy így sem

teamtom · 2007. Ápr. 28. (Szo), 17.17
a mysql táblából kinyert szöveg tartalma ugyanaz, mint az első sztring (amelyben megtörténik a változó behelyettesítése)

ha változón (tömbön) keresztül (hogy máshogy?) próbáltam kiíratni a sztringet, bennemaradtak a változók.
olyan mintha a behelyettesítés dupla idézőjelek között csak egy szint mélységben hajtódna végre, iteráció nélkül

igazából az lenne számomra a lényeg, hogy a táblából kinyert szövegben a beleírt változók behelyettesítődjenek a változók értékével valahogyan, nem a kiíratás (echo v. print)

a kapcsos zárójelet megpróbáltam, ugyanúgy benne maradnak a változók a sztringemben :(
3

Re

Max Logan · 2007. Ápr. 28. (Szo), 17.43
Tehát ha jól értem, akkor neked van egy MySQL táblád amiben úgy mented el a szöveget, hogy "vmi szöveg $tomb_neve[index] folytatódik a szöveg"?

Ha az a helyzet áll fenn, akkor sztem alapvető tervezési hiba van nálad (én ilyet biztosan nem csinálnék).

Megoldás lehet az eval() függvény használata.

Pontosan mit is akarsz a dologgal elérni? Mert sztem van jobb megoldás is, legalábbis ha valóban az van amire én gondolok ...
4

sémaszöveg van a táblámban

teamtom · 2007. Ápr. 28. (Szo), 17.53
nem, nincs a táblába tömb tervezve
$string = "blabla bla $fullname blabla blabal $password"

ettől függetlenül lehet tervezési hiba is :)

a táblából a $string sémaszöveget nyerem ki, amiben a 2 darab változót ($fullname: teljes név, $password: generált jelszó ) aktualizálnám
vagyis azt hiszem, ez templétezés, de emiatt nem akartam Smarty-t használni (nem is igazán értek hozzá)

felhasználói regisztráció a környezet, egyébként

a kimenet egy darab sztring, egy személyreszabott válaszlevél, amit mailben visszaküldök
5

Egy lehetséges megoldás

Max Logan · 2007. Ápr. 28. (Szo), 18.20
<?php

 $fullname = "_felhasználói_név_";
 $password = "_bonyolúlt_jelszó_";

 $mit[] = "{fullname}";
 $mit[] = "{password}";

 $mire[] = $fullname;
 $mire[] = $password;

 $string_original = "bla bla bla {fullname} bla bla bla {password} bla bla bla";
 $string_replaced = str_replace($mit,$mire,$string_original);

 echo "Csere előtt : ",$string_original;
 echo "<br>";
 echo "Csere után : ",$string_replaced;

?>
Ps.: Biztonsági okokból ne tedd bele a levélbe a honlap URL-jét. Érdemes ezt a cikket elolvasni.
6

Köszönöm

teamtom · 2007. Ápr. 28. (Szo), 18.53
Köszönöm, azt hiszem kicsit túlbonyolítottam a problémát!

nem tudtam, hogy az str_replace tömbök között is működik

RTFM, hát persze :)
7

Sztingösszefűzás:

saxus · 2007. Ápr. 30. (H), 04.04
Miért nem lehet szimplán összefűzni a stringeket?
$nevecske = 'pistabácsi';
$jelszocsak = 'nagyontitkosvalami';

$keres = 'bablabla '.$nevecske.' blablabla '.$jelszocska.' blablabla';
Persze ugyanúgy működik " -jel is, csak jobb szeretem az aposztrófot. Például HTML kódot jobb szeretem ' -ok közé tenni, mert nem kell a "-k escapelni, azt a néhány ' escapelését meg kibírom.
10

Összefűzés

Max Logan · 2007. Ápr. 30. (H), 12.50
Az összefűzés azért nem jó, mert neki egy minta van tárolva MySQL-ben, amiben ki kell cserélni a nevet és jelszót. Amit te írtál tökéletes, ha nem DB-ben van tárolva a $keres változó tartalma, hanem be van ágyazva fixen a kódba.
8

(töröljétek)

saxus · 2007. Ápr. 30. (H), 04.04
(Légyszives töröljétek, triplán ment véletlen, mert szakadozott a net este).
9

(töröljétek)

saxus · 2007. Ápr. 30. (H), 04.08
(Légyszives töröljétek, triplán ment véletlen, mert szakadozott a net este).