PHP DateTime::format 具有 html 个字符实体

PHP DateTime::format with html character entities

我正在从 MySQL 数据库向 DOM 写入日期,该数据库正由 PHP 的 DateTime class(我服务器的 运行 PHP 5.5.14) 这样

$start_date->format('M. d, Y');

但是,当它到达 div 的末尾时,年份将换行到新的一行。我希望我可以像这样插入一个不间断的 space:

$start_date->format('M. d, Y');

但是 class 认为 n 和 s 是格式字符,并吐出这个乱码:Mar.&3b30p;27,&3b30p;2015

我可以转义那些字符吗?或者我是否必须制作一个函数,在日期格式化后用 html 字符实体替换 space?

您需要对格式字符进行转义:

'M.&\n\b\s\p;d,&\n\b\s\p;Y'

我只是将它们全部转义,而不是查找哪些是必须转义的。如果它们被转义,也更容易看出它们并不意味着格式的一部分。

这仅适用于单引号字符串,因为 \n 将是双引号中的换行符。

您可以通过在 ns 前加一个反斜杠来避免这种情况。

这行代码应该适合您:

$start_date->format('M.&\nb\sp;d,&\nb\sp;Y');

这将输出:Mar. 27, 2015

日期格式的一个很好的例子:http://php.net/manual/en/function.date.php#example-2501

或者你可以

<?php echo $start_date->format('M.'); ?>
&nbsp;
<?php echo $start_date->format('d,'); ?>
&nbsp;
<?php echo $start_date->format('Y'); ?>