Question

J'ai une sorte de chose étrange que je vraiment nead pour mon texte formattage. Ne me demandez pas pourquoi s'il vous plaît je l'ai fait cette chose étrange! ; -)

Alors, mon script PHP remplace toutes les lignes pliages « \ n » avec l'un des symboles speacial comme « | ». Quand j'insérer des données à base de données, le script PHP remplace toutes les pliages en ligne avec le symbole « | » et lorsque le script lit les données texte à partir de la base de données, il remplace tous les symboles spéciaux « | » avec le pliage de ligne "\ n".

Je veux limiter le format de texte dans la façon dont il coupera pliages en ligne s'il y a plus de 2 pliages ligne utilisés dans chaque textes de séparation.

Voici l'exemple du texte que je veux que le script Format:

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...

Je veux au format restict comme:

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...

Ainsi, au premier exemple, il existe seulement une ligne de pliage entre 2 et textes sur le second exemple, il y a 3 pliages de ligne entre 2 textes.

Comment il peut être possible de remplacer plus de 2 lignes pliages symboles « | » si elles sont détectées sur le texte?

Ceci est une sorte d'exemple je veux le script à faire:

    $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, je RENCONTREZ DES PROBLÈMES! CELA NE FONCTIONNE PAS QUAND LE TEXTE EN DONNÉES EST ENVOYÉ méthode POST. REGARDEZ CE:

//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"];

Voici l'entrée I texte sur textarea et après la str_replace il montre ceci:

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.

Voici mon PHP et le code 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>
Était-ce utile?

La solution

On dirait un bon endroit pour utiliser une expression régulière:

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

En anglais: "Remplacer 3 ou plusieurs caractères | avec ||"

Autres conseils

function clean($content) {
    $content = str_replace("||","|",$content);
    if (stripos("||",$content) !== false) {
        $content = clean($content);
    }

    return $content;
}

$text = clean($text);

Quelque chose comme une fonction de boucle

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top