Вы, наверное, заметили, что php-строка обозначается то одинарными, то двойными кавычками. Дело в том, что всё, что находится в одинарных кавычках, интерпретируется просто как последовательность символов, как текст.
Если же php-строка обозначается двойными кавычками, то вместо переменных будут выводиться значения этих переменных. Поэтому если в строке есть переменные, то в качестве внешних кавычек лучше применять двойные кавычки.
Но тогда значения атрибутов html-кода придется заключать в одинарные кавычки. При этом, переменные внутри одинарных кавычек будут продолжать работать, так как снаружи применяются двойные.
$weight='bold';
echo "<div style='font-weight:$weight'>";
Если внутри одинарных кавычек нужны вложенные кавычки, то придется использовать двойные, но они уже заняты. Если двойные (или одинарные) кавычки нужно отображать как символы, то предваряйте их обратным слешем, как в следующем примере, для трех строковых параметров JavaScript функции window.open():
<?php echo " <a href='' onclick=' window.open(\"$url\",\"\",\"width=$width,height=$height\"); return false; ' >blox.ru</a> " ?>Впрочем, можно избавиться от одного уровня кавычек, перейдя на альтернативный синтаксис php-кода.
<a href='' onclick=' window.open("<?= $url ?>","","width=<?= $width ?>,height=<?= $height ?>"); return false; ' >blox.ru</a>
Если посмотреть на html-код странички, сгенерированной из шаблонов предлагаемым способом, то в коде вы увидите одни одинарные кавычки. Однако, классическим считается применение двойных кавычек. В канонической форме XML значений атрибута могут обрамляться только двойными кавычками.
Чтобы вернуться к двойным кавычкам для атрибутов, есть два выхода.
echo "<a href=\"?page=$dat[1]\">$dat[2]</a>";
echo '<a href="?page='.$dat[1].'">'.$dat[2].'</a>';
Когда используется только одна переменная, то код с использованием одинарных кавычек и оператора конкатенации выполняется быстрее, чем код с двойными кавычками, обрамляющими весь тестируемый фрагмент, на 10-15% . Однако, если вставляются три и более переменных, то способ "Одинарные кавычки + конкатенация" выполняется, наоборот, медленнее. Например, если сто переменных перемежаются со ста символьными строками, время выполнения кода становится на 50% больше!
<a href="?page=<?= $dat[1] ?>"><?= $dat[2] ?></a>
<a href="?page=<?=$dat[1]?>"><?=$dat[2]?></a>
Оператор конкатенации может оказаться полезным еще в одном случае, а именно, при вычислении значения функции прямо в строке. Например:
# Сначала вычисляем переменную, затем вставляем: $aa = strip_tags($dat[2]); echo "<div><h3>$dat[1]</h3>$aa</div>"; # Вставляем, вычисляя на лету: echo "<div><h3>$dat[1]</h3>".strip_tags($dat[2])."</div>";
С помощью оператора конкатенации можно вставлять не только значения функций, но и результаты арифметических операций:
$aa=4; $bb=3; echo "<div>".$aa*$bb."</div>"; // <div>12</div> echo "<div>".$aa/$bb."</div>"; // <div>1.333</div> echo "<div>".$aa%$bb."</div>"; // <div>1</div> echo "<div>".($aa+$bb)."</div>";// <div>7</div> echo "<div>".($aa-$bb)."</div>";// <div>1</div> echo "<div>".(-$aa)."</div>"; // <div>-4</div>
Esc-последовательности, или управляющие последовательности, состоят из обратной, косой черты (\), за которой следует буква или комбинация цифр. В них символ обратной косой черты рассматривается как символ, изменяющий значение буквы. Они вместе являются одним целым и выполняют определенное действие при выводе на устройство отображения, например, переход на новую строку (\п) или табуляцию (\t).
Esc-последовательности нужно заключать в двойные кавычки, esc-последовательности , заключенные в одинарные кавычки интерпретируются просто как символы.
echo "\n".'<div class="content">'.$dat[2].'</div>'; // или echo "\n<div class='content'>$dat[2]</div>";
По стандартам XHTML значения атрибутов, даже числовые, должны быть заключены в кавычки. Разрешены как двойные, так и одинарные кавычки.
Вы должны только определиться, какой стиль вам больше подходит. Если вы – за чистоту кода страницы, применяйте в атрибутах двойные кавычки. Если вам важнее удобство кодирования, пишите в атрибутах одинарные кавычки, к тому же, одинарная кавычка, в отличие от двойной, пишется с помощью одной клавиши.