0

おそらくここでは単純な問題ですが、私はそれを見つけることができません。

テキストエリアから入力および保存された文字列を分解しています。タグで文字列を分解できるように、nl2br()を使用します。<br />

文字列は適切に分解されますが、whileループで文字列の最初の文字を取得しようとすると、最初の行にしか戻りません。

注:ここでの概念はグリーンテキスト化であるため、これに精通している場合は、私が何をしようとしているのかがわかります。そうでない場合は、コードサンプルの下に簡単な説明を記載します。

コード:

while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$comment = nl2br($row['comment']);
$sepcomment = explode("<br />", $comment);
$countcomment = count($sepcomment);
$i = 0;



//BEGIN GREENTEXT COLORING LOOP
while($i < $countcomment) {

$fb = $sepcomment[$i];
$z = $fb[0]; // Check to see if first character is >

if ($z == ">") {
$tcolor = "#789922";
}
else {
$tcolor = "#000000";
}

echo '<font color="' . $tcolor . '">' . $sepcomment[$i] . '</font><br>';

$i++;
}
//END GREENTEXT COLORING LOOP


}

Greentext:行の最初の文字が「>」の場合、その行全体の色は緑になります。そうでない場合、色は黒です。

写真出力の画像

私が試したこと:

  1. strip_tags()-おそらく
    タグが最初の文字として機能していたと考えています。
  2. $fb = preg_replace("/(<br\s*\/?>\s*)+/", "", $sepcomment[$i]);
  3. str_replace()
  4. echo $ z //最初の行に正しい文字を表示し、次の行には空白を表示します。
  5. $ z = substr($ fb、0、1);

これは、文字列の最初の5文字を​​返したときに行ったテストです。 最初の5文字

それらの空の文字を取り除くためのアイデアはありますか?

4

1 に答える 1

1

「トリム」機能を試す

$fb = trim($sepcomment[$i]);

http://php.net/manual/en/function.trim.php

(おそらく改行が問題です。タグの後に\ n \ r文字があります)

于 2013-02-19T20:54:45.263 に答える