Bonjour tout le monde, j'ai un problème sur un de mes tests

Je test sur une chaine de caractère extraite de la BDD si il y as la présence d'un point puis d'un espace, lorsqu'il y as ce point et cet espace je veut les changer en retour à la ligne mais mon code ne fait pas ça.

Lorsque le code s'exécute, j'ai le echo qui s'affiche pour TOUT les caractères , et aucun retour à la ligne ne se fait ...


        $objectif = $donnees['objectifs'];
        $j = strlen($objectif);
        $compare = ". ";
       

        for($i=0;$i<$j;$i++)
        {
            if (substr_compare($objectif, $compare, $i) == 1)
            {
                echo "caractère ".$i."<br>";
                substr_replace($objectif, "\n", $i);
            }
        }


Merci d'avance
Modifié par OnePunch (10 Oct 2017 - 15:30)
Bonjour, pourquoi ne pas utiliser str_replace?

Sinon il manque le dernier paramètre :


if (substr_compare($objectif, $compare, $i, strlen(compare)) == 0)

Modifié par kustolovic (10 Oct 2017 - 16:18)
kustolovic a écrit :
Bonjour, pourquoi ne pas utiliser str_replace?

Sinon il manque le dernier paramètre :


if (substr_compare($objectif, $compare, $i, strlen(compare)) == 0)


+1

Et si tu veux détecter seulement une sous chaine de caractère, tu as strstr(). Tu peux aussi imaginer la position d'une sous chaine qui sera différent de false. Dans ce cas là, strpos(), stripos(), strrpos() te seront utiles. Smiley cligne

Cela veut dire que ta boucle (qui bouffe des perfs pour rien) ne sert à rien !
Modifié par niuxe (10 Oct 2017 - 19:48)
Meme en mettant le dernier paramètre, le test s'effectue pour tout les caractères ...

Je comprends vraiment pas pourquoi
Moi je ne comprends rien a ce que tu fait ??????
testes simplement:
si c'est pour un texte figurant dans un html

<?PHP
$objectif = $donnees['objectifs'];
$objectif = str_replace('.  ', '<br \/>', $objectif);
?>

si c'est pour un texte figurant dans un texarea ou mail à envoyer

<?PHP
$objectif = $donnees['objectifs'];
$objectif = str_replace('.  ', '\n\r', $objectif);