Page 1 sur 1

suppression dans une chaîne

Posté : 13 sept. 2005, 21:57
par Task
Bonjour,

$chaine ='13,12,152,48,385';
$nombre = '152';

Mon problème est le suivant : je sais que ma variable $nombre est forcément dans $chaine, mais je ne peux pas savoir à quel endroit.
Or je dois supprimer '152' afin que $chaine soit égal à '13,12,'48'385'.

Avez-vous une idée svp ?
Merci à vous.
Task

Posté : 13 sept. 2005, 22:02
par Vaedan
$position = strpos( $chaine, $nombre );
if ( $position !== false )
    echo '<b>', $nombre, '</b> commence au caractère <b>', $position, '</b>';

merci mais pour supprimer

Posté : 13 sept. 2005, 22:11
par Task
Merci bien,
Je sais maintenant ou commence mon nombre mais comment puis-je le supprimer ?
Merci

Posté : 13 sept. 2005, 22:31
par Vaedan
bah ...
$position = strpos( $chaine, $nombre );
if ( $position !== false )
{
    if ( isset( $chaine{ $position + strlen( (string)$nombre ) + 1 } ) )
    {
        if ( $chaine{ $position + strlen( (string)$nombre ) + 1 } === ',' )
            $replace = $nombre . ',';
    }
    elseif ( isset( $chaine{ $position - 1 } ) )
    {
        if ( $chaine{ $position - 1 } === ',' )
            $replace = ',' . $nombre;
    }
    else
    {
        $replace = $nombre;
    }
}

echo str_replace( $replace, '', $chaine );

curieux

Posté : 13 sept. 2005, 23:59
par Task
ça me donne toujours la même liste ?

merci

Posté : 14 sept. 2005, 00:54
par Task
j'ai finalement réussi en bidouillant ton code.
Merci pour les infos.
Task

Posté : 14 sept. 2005, 08:37
par Vaedan
un pti résolu ? ;)

Posté : 14 sept. 2005, 11:29
par Tho
et comme ça :
<?php
$chaine ='13,12,152,48,385';
$nombre = '152';
echo substr_replace($chaine, '', strpos($chaine,$nombre), strlen($nombre));
?>