Ik zou het zo doen:
<?php
$teverwijderen = 'johan'; // de te zoeken naam
$string="jan-baard,johan-vliet,maya-jans,piet-hein,";
echo $string . "\n"; // test hoe de string eruitziet
$alsreeks = explode(',', $string); //maak array van string
$sleutel = -1; // de plek waar de te verwijderen naam staat
foreach ($alsreeks as $key=>$naam) {
if (strpos($naam, $teverwijderen) !== false) { //gevonden!
$sleutel = $key;
break; //zoek niet verder
}
}
if ($sleutel >= 0) { //naam is gevonden
unset($alsreeks[$sleutel]); //verwijder de naam
$string = implode(',', $alsreeks); //maak weer een string
} else {
echo "naam is niet gevonden.\n";
}
echo $string . "\n"; // test hoe de string eruitziet
?>
Cool, als eerste oplossing is niet een oplossing met een dubbele explode gegeven! En ook de tweede niet eens :-)
Anyway, mijn oplossing zou ook die van Ozzie zijn, waarbij ik alleen dit stukje:
<?php
$reverse = strrev($string);
if ($reverse[0] === ',') $string = substr($string, 0, -1);
?>
zou vervangen door:
<?php
$string = trim( $string, ',' );
?>