Hoi

ik heb een string die er zo uit ziet:
<?php
$string="jan-baard,johan-vliet,maya-jans,piet-hein,";
?>

ik weet dat de gebruiker die ik uit de string wil verwijderen johan heet, maar ik weet niet zijn achternaam

Hoe verwijder ik "johan-vliet," uit die string?
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
?>
Ivo, vind je dat zelf niet een beetje een onhandige oplossing?

Ik zou het zo doen:

<?php
$string="johan-cruijff,jan-baard,johan-vliet,maya-jans,piet-hein,johan-vlemmix";

$string = preg_replace('/johan-[\w]+,?/', '', $string);
$reverse = strrev($string);
if ($reverse[0] === ',') $string = substr($string, 0, -1);
echo $string;
?>

Geeft als resultaat:

jan-baard,maya-jans,piet-hein
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, ',' );
?>
Ah, das inderdaad een mooie Erwin. Ik wist niet dat dat kon (weer wat geleerd). Dan wordt ie dus zo:

<?php
$string="johan-cruijff,jan-baard,johan-vliet,maya-jans,piet-hein,johan-vlemmix";

$string = preg_replace('/johan-[\w]+,?/', '', $string);
$string = trim($string, ',');

echo $string;
?>
Ozzie PHP op 02/02/2013 17:07:15

Ivo, vind je dat zelf niet een beetje een onhandige oplossing?

Ozzie, ik geef het niet graag toe ;) , maar jouw oplossing is inderdaad veel efficiƫnter.
Bedankt voor je bijdrage.

Haha, lol... ;)
Hoop dat de topic starter er iets mee kan...

Reageren