1

搜索后,我发现 PHP 函数
在字符串中的所有换行符之前插入

nl2br();

例子:

<?php
   echo nl2br("This is an example\r\n where line breaks\r\n added", false);
?>

以上代码输出:

This is an example<br\>
where line breaks<br\> 
added

我想要输出而不是 <br/> 我将在所有换行符之前和之后用标签包装字符串

上面代码的示例输出用 span 包装字符串

<span>This is an example</span>
<span>where line breaks</span> 
<span>added</span>

是否存在PHP函数?或自定义 PHP 函数

4

9 回答 9

1

您可以在“\r\n”上执行“爆炸”,并使用连接的跨度遍历每个值。

就像是

$values = explode("\r\n", "one\r\ntwo\r\nthree\r\nfour")
$newvalues = ""

foreach($values as $value){
    $newvalues = $newvalues . "<span>" . $value . "</span>"
}
于 2012-08-27T20:10:06.603 回答
1
    $str = "This is an example\r\n where line breaks\r\n added";
    $str = explode("\r\n",$str);
    foreach($str as $key => $value) {
       echo "<span>".$value."</span>";
}
于 2012-08-27T20:11:20.483 回答
1

使用file(). 它将整个文件作为一个数组返回,每个都是一个新行。遍历那里并添加您的跨度。不是最好的方法,但如果您有很多文件要执行此操作,它与任何其他解决方案一样简单。否则,只需在分隔符上爆炸。

于 2012-08-27T20:13:09.577 回答
0

此函数仅基于 CRLF 或 LF 拆分字符串,然后将其包装到<span>标签中,应用适当的转义(重要):

function nl2span($str)
{
    $r = '';
    foreach (preg_split("/\r?\n/", $str) as $line) {
        $r .= '<span>' . htmlspecialchars($line). '</span>';
    }
    return $r;
}

如果您的行尾始终为CRLF,您可以将 替换preg_split()为更传统的explode("\r\n", ...).

于 2012-08-27T20:18:20.993 回答
0
$string = "This is an example\r\n where line breaks\r\n added";
var_dump($string); 
// string(46) "This is an example
// where line breaks
// added"
array_map(function($s){echo sprintf('<span>%s</span>', trim($s));}, explode("\r\n", $string));
// <span>This is an example</span>
// <span>where line breaks</span>
// <span>added</span>
于 2012-08-27T20:35:26.440 回答
0

这很有用:

function nl2span( $str) {
    return '<span>' . implode( '</span><span>', explode( "\r\n", $str ) ) . '</span>';
}
于 2014-06-23T10:53:05.467 回答
0
function splitToSpans($string) {
    $lines = explode('\r\n', $string);
    $finalString = '';
    foreach ($lines as $line) {
        $finalString .= '<span>' . $line . '</span>';
    }
    return $finalString;
}
于 2012-08-27T20:11:29.077 回答
0

就像是:

$strout = '';
$lines = explode(PHP_EOL, $input);
foreach ($lines as $line) {
    $strout .= "<span>$line</span>";
}
于 2012-08-27T20:11:35.020 回答
0

选项1:

<?php
$string = "Line 1
Line 2
Line 3";
$string = preg_replace('/^(.*)$/m', '<span>$1</span>', $string);
echo $string;

选项 2:

<?php
$string = "Line 1\r\nLine 2\r\nLine 3";
$string = array_map(function($value) {
    return "<span>$value</span>";
}, explode("\r\n", $string));
echo implode("\r\n", $string);
于 2012-08-27T20:14:04.557 回答