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>This is an example</span>
<span>where line breaks</span> 
<span>added</span>

これにPHP関数はありますか?またはカスタムPHP関数

4

9 に答える 9

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

「\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

を使用しfile()ます。ファイル全体が配列として返され、それぞれが新しい行になります。そこを繰り返して、スパンを追加します。最善の方法ではありませんが、これを行うためのファイルがたくさんある場合は、他のソリューションと同じように簡単です。それ以外の場合は、区切り文字を爆発させます。

于 2012-08-27T20:13:09.577 に答える
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 に答える
0

この関数は、CRLFまたはLFのみに基づいて文字列を分割し、それを<span>タグにラップして、適切なエスケープを適用します(重要)。

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

行末が常にpreg_split()CRLFである場合は、をより従来型のに置き換えることができます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 に答える