2013-12-17 90 views
0

在php中是否存在与html <sub>等价的内容?我已经找了几天,似乎无法找到一个。 无论如何,我想得到类似于评论结果3的结果并将其包装到一个变量中。结果1是完全失败。结果2有效,但缺少我的<sub>。任何见解?需要让Sub在PHP中工作

<?php 

$a = 'Na'; 
$B = 'CO3'; 
$B1 = 2; 

$result1 = $a ?> <sub> <? $B1 ?> </sub> <? $B ; 
$result2 = $a . $B1 . $B ; 

echo $result1; 
echo $result2; 

// result 3 
echo $a ?> <sub> <? echo $B1 ?> </sub> <? echo $B ; 
?> 
+0

这不是一个很好的做法,直接混淆了PHP与HTML。看@菲尔的回答 – azuax

+0

@azuax其实,我完全推荐在静态HTML中混合使用PHP *回声*。为更易于阅读的代码做准备,特别是当与[控制结构的替代语法](http://php.net/alternative_syntax) – Phil

+0

@Phil一起使用时,但有一件事是做一个if或for以及其他的事情是要做类似问题的代码。只是为了记录,我的意思是你的回答是正确的 – azuax

回答

4

尝试sprintf

$result1 = sprintf('%s <sub> %s </sub> %s', 
    htmlspecialchars($a), 
    htmlspecialchars($B1), 
    htmlspecialchars($B)); 

如果你唯一的目的是要显示一个HTML文档中的这个数据,我会推荐这种方法,而不是

<?php 
$a = 'Na'; 
$B = 'CO3'; 
$B1 = 2; 
?> 

<p> <!-- or whatever container element you want to use --> 
    <?= htmlspecialchars($a) ?> 
    <sub> 
     <?= htmlspecialchars($B1) ?> 
    </sub> 
    <?= htmlspecialchars($B) ?> 
</p> 

但是,这主要是因为我恨通过PHP生成HTML。

应该呈现为

娜 CO3

+0

不错,有待挖掘的新东西。 – Edwinner

+0

@Edwinner *新*? 'sprintf'和'htmlspecialchars'自从成立以来一直是PHP代码库的一部分(至少从第4版开始) – Phil

+0

@ Phil-我从来没有用过它,但是几个月前我又开始认真对待PHP。 – Edwinner

1

您的代码显得扑朔迷离。对我而言,它应该像我下面那样格式化。请记住,<?php?>分界严格地将PHP与HTML分开。在PHP中,您可以毫无问题地回显HTML。在这种情况下保持简单&仅使用<?php?>来包装代码块。

<?php 
$a = 'Na'; 
$B = 'CO3'; 
$B1 = 2; 

$result1 = $a . '<sub>' . $B1 . '</sub>' . $B; 
$result2 = $a . $B1 . $B ; 

echo $result1; 
echo $result2; 

// result 3 
echo $a . '<sub>' . $B1 . '</sub>' . $B; 
?> 

此外,您还可以使用sprintf,我喜欢用较大的字符串,但那是你自己的选择:

$result1 = sprintf('%s<sub>%s</sub>%s', $a, $B1, $B); 
+1

很好的回答!上面的结果是我所要做的。 – Edwinner