Escape двойные кавычки HTML-атрибутов, выводимые PHP

Часто при написании PHP я буду выводить некоторый HTML как это –

echo "<a href="../" title="link title">".$link_text."</a>"; 

Очевидно, это не будет анализировать, поскольку мне нужно избежать двойных кавычек в атрибутах элемента <a> . Есть ли регулярное выражение, которое быстро сделало бы это вместо того, чтобы я вручную добавлял обратную косую черту?

Еще одно: регулярное выражение не должно избегать двойных кавычек за пределами тега (например, где я $link_text переменную $link_text .

Есть идеи?

Вместо этого следует использовать одиночные кавычки:

 echo '<a href="../" title="link title">' . $link_text . '</a>'; 

Решения, которые я могу придумать (не без побега):

  • Одиночные цитаты

     echo '<a href="../">' . $link_text. '</a>'; 
  • Использовать двойные кавычки

     echo "<a href='../'>$link_text</a>"; 
  • Sprintf

     echo sprintf('<a href="../">%s</a>', $link_text); 
  • Использовать HEREDOC

     echo <<<EOF <a href="../">$link_text</a> EOF; 
  • Использовать механизм шаблонов, например smarty

  • Выход из PHP-режима :

     ?><a href="../"><?php echo $link_text ?></a><?php // other code... 

BTW, обязательно используйте htmlspecialchars() $link_text переменной $link_text или у вас будет отверстие для безопасности XSS.

Использовать (этот синтаксис не беспокоится о кавычках и т. Д.)

 echo <<<EOT <a href="../" title="link title">$link_text</a> EOT; 

Я настоятельно рекомендую использовать шаблоны вместо того, чтобы пытаться создавать строки.

В сыром PHP:

 <a href="../" title="link title"><?php echo $link_text; ?></a> 

используйте одинарные кавычки или используйте heredoc . Я бы предпочел последнее.

Я думаю, вы можете использовать

 http://www.example.com/.../Learning-Tutorials/ACTIVE-USER-ACCOUNT/verify.php?email='.$email.'&hash='.$hash.' "<a href="//www.example.com/.../Learning-Tutorials/ACTIVE-USER-ACCOUNT/verify.php?email="$email&hash=$hash>Click Here to Active</a>" 

попробуй.