0

テキストの書式設定に本当に必要な奇妙なことがあります。なぜ私がこの奇妙なことをしたのか私に聞かないでください!;-)

したがって、私のPHPスクリプトは、すべての行の折り畳み「\n」を「|」のような特殊記号の1つに置き換えます。データベースにテキストデータを挿入すると、PHPスクリプトはすべての行の折り畳みを記号「|」に置き換えます。スクリプトがデータベースからテキストデータを読み取ると、すべての特殊記号「|」が置き換えられます。行折り"\n"付き。

各区切りテキストで2つ以上の行折りが使用されている場合に、行折りをカットするようにテキスト形式を制限したいと思います。

スクリプトでフォーマットするテキストの例を次に示します。

this is text... this is text... this is text...this is text...this is text... this is text... this is text... this is text... this is text... this is text...

this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text...

次のような形式を制限したい:

this is text... this is text... this is text...this is text...this is text... this is text... this is text... this is text... this is text... this is text...



this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text... this is text...

したがって、最初の例では2つのテキストの間に1行の折り畳みがあり、2番目の例では2つのテキストの間に3つの行の折り畳みがあります。

2つ以上の折り畳み記号「|」をどのように置き換えることができるか それらがテキストで検出された場合は?

これは、スクリプトに実行させたい一種の例です。

    $text = str_replace("|||", "||", $text);
    $text = str_replace("||||", "||", $text);
    $text = str_replace("|||||", "||", $text);
    $text = str_replace("||||||", "||", $text);
    $text = str_replace("|||||||", "||", $text);
    ...
    $text = str_replace("||||||||||", "||", $text);

    $text = str_replace("|", "<br>", $text);

HM、問題があります!これは、テキストデータがPOSTメソッドで送信される場合は機能しません。これを見てください:

//REPLACING ALL LINE FOLDINGS WITH SPECIAL SYMBOL
$_POST["text"] = str_replace("\n","|",$_POST["text"]);
// REMOVING ALL LINE FOLDINGS
$_POST["text"] = trim($_POST["text"]);
// IF THERE ARE MORE THAN 3 LINE HOLDINGS - FORMAT TO 1 LINE HOLDING
$_POST["text"] = preg_replace("/\|{3,}/", "||", $_POST["text"]);
echo $_POST["text"];

これがtextareaに入力したテキストで、str_replaceの後に次のように表示されます。

This is text 1. This is text 1. This is text 1. This is text 1. This is text 1. This is text 1. This is text 1. | | |This is text 2. This is text 2. This is text 2. This is text 2. This is text 2. This is text 2. This is text 2. | | | |This is text 3. This is text 3. This is text 3. This is text 3. This is text 3.

これが私のPHPとHTMLコードです:

<?
//REPLACING ALL LINE FOLDINGS WITH SPECIAL SYMBOL
$_POST["text"] = str_replace("\n","|",$_POST["text"]);

echo "1) ".$_POST["text"]."<br><br>";

// REMOVING ALL LINE FOLDINGS
$_POST["text"] = trim($_POST["text"]);
// IF THERE ARE MORE THAN 3 LINE HOLDINGS - FORMAT TO 1 LINE HOLDING
$_POST["text"] = preg_replace("/\|{3,}/", "||", $_POST["text"]);

echo "2) ".$_POST["text"]."<br><br>";
?>
<html>

<head>
<title>No title</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form name="form1" method="post" action="test.php">
    <p><textarea name="text" rows="8" cols="55"></textarea></p>
    <p><input type="submit" name="formbutton1"></p>
</form>
<p>&nbsp;</p>
</body>

</html>
4

2 に答える 2

5

正規表現を使用するのに適した場所のようです。

$text = preg_replace('/\|{3,}/', '||', $text);

|英語:「3文字以上を||「 」に置き換える

于 2010-04-05T21:02:41.647 に答える
0
function clean($content) {
    $content = str_replace("||","|",$content);
    if (stripos("||",$content) !== false) {
        $content = clean($content);
    }

    return $content;
}

$text = clean($text);

ループ関数のようなもの

于 2010-04-05T21:28:24.847 に答える