Tach!
<? echo '<a href="javascript: void(0);" onclick="showEditBox('.$zeile.','.$text.')">'.$text.'</a>'; ?>
Die Kurzschreibweise<? ?>
solltest du nicht verwenden, sondern<?php ?>
.
Es gibt dazu keinen generellen Grund. Wenn das eigene System das so gestattet und das Projekt nicht für andere Systeme vorgesehen ist, warum sollte man es dann nicht so verwenden? Wegen, weil, könnte ja mal in Zukunft ...? Nö, das wäre eine Ausrede, kein Grund. Zur Not kann man dann immer noch mit globalem Suchen und Ersetzen Abhilfe schaffen. Bis dahin hat man ein einfacheres Leben.
(Oder wennschon kurz, dann richtig:
<?= '<a … >'; ?>
)
Ab PHP 5.4 steht die Version <?= generell unabschaltbar zur Verfügung.
Das Konkatenieren der Zeichenketten kannst du dir sparen, wenn du doppelte Anführungszeichen verwendest:
<?php echo "<a href='javascript: [code lang=javascript]void(0);
' onclick='showEditBox($zeile, \"$text\");
'>$text</a>"; ?>[/code]
Jein. Man kann sich das nur dann sparen, wenn man keinen Kontextwechsel beachten muss. Das heißt, Texte deren Ziel ein Javascript-String sind und die zum Beispiel Anführungszeichen, Zeilenumbrüche, Backslashes und </ enthalten können, können nicht über einfache Variablenauflösung in PHP-Strings eingebettet werden.
Für Javascript gibt es keine Maskierfunktion in PHP, aber die aus dem Kontextwechsel-Artikel kann genommen werden.
<?= '<a href="javascript:void(0);" onclick="showEditBox(\"' .
htmlspecialchars(javascript_escape($zeile)) . '\", \"' .
htmlspecialchars(javascript_escape($text)) . '\");">' .
htmlspecialchars($text) . '</a>'; ?>
Um das Rein-Raus zu sparen kann man aber (s)printf() und Platzhalter verwenden:
<? printf('<a href="javascript:void(0);" onclick="showEditBox(\"%s\", \"%s\");">%s</a>',
htmlspecialchars(javascript_escape($zeile)),
htmlspecialchars(javascript_escape($text)),
htmlspecialchars($text)); ?>
So wird ein sicherer Schuh draus (ungeachtet der Sinnfälligkeit des hrefs etc.).
dedlfix.