通常,在编写 PHP 时,我会让它输出一些像这样的 HTML -

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

显然这不会解析,因为我需要转义属性中的双引号 <a> 元素。是否有一个正则表达式可以快速执行此操作,而不是我手动添加反斜杠?

另一件事 - 正则表达式不应该转义标签之外的双引号(例如我附加的地方 $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);
    
  • 使用定界符

    echo <<<EOF
    <a href="../">$link_text</a>
    EOF;
    
  • 使用模板发动机似的 智者

  • 退出 PHP-模式:

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

顺便说一句,以确保使用 htmlspecialchars()$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>

使用单引号或使用 特雷多克. 。我更喜欢最后一个。

我想你可以使用

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>"

尝试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top