Autor Zpráva
luma64
Profil
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
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));
?>
Sprintf tam byt nemusi. Parametry v url bys mel osetrit pomoci urlencode(). Hodnoty pro onclick="" bys mel osetrit na uvozovky ' " a znaky vetsi a mensi > < (pro textarea)
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
Mozna ti to odmazalo forum, nevim.

<?php
$str = '<a href="%s" onclick="return popitup(\'%s\');">%s</a>';
echo sprintf($str,$newUrl,htmlspecialchars($newUrl),htmlspecialchars($name));
?>
* $str je sablona, do ktere sprintf za %s dosazuje promenne jako typ string. $str uz mas krasny jednoduchy html kod neprerusovany, takze si ho muzes snadneji osetrit.
* 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 a vidis, ze dvojita uvozovka ti ukonci onclick predcasne, nez jsi zamyslel
* 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 
parametr ti zapocne novy tag

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: