Autor | Zpráva | ||
---|---|---|---|
luma64 Profil |
#1 · Zasláno: 9. 1. 2013, 15:39:50 · Upravil/a: Moderátor (editace znemožněna) 10. 1. 2013, 18:12:07
Zdravim, ako sa pls spravne zapise vyraz, ktory obsahuje apostrofy a nachadza sa v uvodzovkach ?
Prikaz print "<div id=\"$id\" class=\"drag $class\">$name</div>"; potrebujem pozmenit tak, ze okrem toho ze sa $name zobrazi vytvori sa aj hyperlink <a href=<?php echo $newUrl ?> onclick="return popitup('<?php echo $newUrl ?> ')" ><?php echo "$name"; ?></a> |
||
Sir Tom Profil |
luma64:
Také zdravím, <?php print "<div id='".$id."' class='drag".$class."'>".$name."</div>"; ?> <?php echo "$name"; ?> piš bez uvozovek |
||
Amunak Profil |
#3 · Zasláno: 9. 1. 2013, 17:02:39
luma64:
Doporučil bych používat pro řetězce v PHP spíš apostrofy a uvozovky pak už většinou není třeba řešit, nebo se escapování přinejmenším dost zjednoduší: echo '<a href="' . $newUrl . '" onclick="return popitup(\'' . $newUrl . '\')">' . $name . '</a>'; V ideálním případě používat šablonovací systém, který to odescapuje sám podle kontextu (třeba Latte). Navíc pokud se shoduje adresa a to co vkládáte do funkce popitup, můžete předat pouze objekt this a získat pak adresu až uvnitř JS funkce přes this.href
|
||
peta Profil |
Spravne bys to mel mit takto:
<?php $str = '<a href="%s" onclick="return popitup(\'%s\');">%s</a>'; echo sprintf($str,$newUrl,htmlspecialchars($newUrl),htmlspecialchars($name)); ?> A ja bych pouzil return popitup(this.href)
|
||
luma64 Profil |
peta:
No a ako pls je spravny takyto vyraz ? echo "<div id=\"$id\" class=\"drag $class\"><a href=\"$newUrl\> onclick=\"return popitup('<?php echo \"$newUrl\" ?> ')\ >$name</a></div>; S tym, ze ked sa vypise $name, dynamicky sa vytvara. Zapis je ale chybny : Parse error: parse error, unexpected '/' in C:\www\webroot\cos07\ocos_cos_db.php on line 227 Moderátor jenikkozak: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
jenikkozak Profil |
Možných způsobů zápisu je mnoho. Toto je jeden z nich:
echo "<div id=\"$id\" class=\"drag $class\"><a href=\"$newUrl\" onclick=\"return popitup('$newUrl')\">$name</a></div>"; Echo je příkaz z PHP. Nemůžeš v něm volat spuštění PHP přes <?php (ani jinak). Mimochodem kategorie PHP, kam jsem tvůj dotaz přesunul, má Nejčastější potíže popsané. Je tam i popsáno, jak postupovat v případě nálezu chyb v syntaxi a jak jim předcházet. |
||
peta Profil |
luma64:
Proc nepouzijes sprintf a porad to placis pres echa? Spousta zacatecniku si u echa neumi pohlidat spravne uvozovky a spravny zapis. Ten sprintf (mrkni na manual) ti to elegantne vyresil, ikdyz to vypada napohled sloziteji. Predvedu: echo "<div id=\"$id\" class=\"drag $class\"><a href=\"$newUrl\> onclick=\"return popitup('<?php echo \"$newUrl\" ?> ')\ >$name</a></div>; <?php echo "<div id=\"$id\" class=\"drag $class\" ><a href=\"$newUrl\ // tady mas uvozovku kde? > // to je ukonceni tagu? ale nasleduje onclick onclick=\"return popitup('ooo<?php echo \"$newUrl\" ?>ooo ')ooo\ooo // tady take neni uvozovka a nerozumim, proc tam je php kod a druhe echo -- tady forum to nejak spatne oznacilo php kod < ?php echo ? >, davam tam ooo >$name</a></div>; // a tady take neni uvozovka <?php $str = '<a href="%s" onclick="return popitup(\'%s\');">%s</a>'; echo sprintf($str,$newUrl,htmlspecialchars($newUrl),htmlspecialchars($name)); ?> * parametr1 $newUrl - pro href nemusis s adresou nic delat, zakazane znaky " a <> by meli byt zakodovane pomoci urlencode jeste pred tim. To snad mas, tu cast kodu nezminujes, nevim, co tam tedy je. * parametr2 htmlspecialchars($newUrl) - opet by tam byt nic nemuselo pro url, ale chtel jsem ti ukazat, ze pro jine stringy bys musel zakazane znaky ' " < > zakodovat pomoci htmlspecialchars, jinak by ti narusili html kod parametr2 = ahoj"nazdar <a href="%s" onclick="return popitup('%s');">%s</a> - vzor <a href="X" onclick="return popitup('ahoj"nazdar');">X</a> - dosadim * parametr 3 je totez parametr3 = ahoj<nazdar <a href="%s" onclick="return popitup('%s');">%s</a> - vzor <a href="X" onclick="return popitup('X');">ahoj<nazdar</a> - dosadim |
||
Časová prodleva: 11 let
|
0