Une question de suivi à Get all text between tags with preg_match_all() or better function?match str_replace que première instance
Compte tenu des données POST suivantes:
2010-June-3
<remove>2010-June-3</remove>
2010-June-15
2010-June-16
2010-June-17
2010-June-3
2010-June-1
Je vouloir supprimer seulement la première instance de 2010-Juin-3, mais ce qui suit le code supprime toutes les données.
$i = 1;
$pattern = "/<remove>(.*?)<\/remove>/";
preg_match_all($pattern, $_POST['exclude'], $matches, PREG_SET_ORDER);
if (!empty($matches)) {
foreach ($matches as $match) {
// replace first instance of excluded data
$_POST['exclude'] = str_replace($match[1], "", $_POST['exclude'], $i);
}
}
echo "<br /><br />".$_POST['exclude'];
Ce echos:
<remove></remove>
2010-June-15
2010-June-16
2010-June-17
2010-June-1
Il devrait faire écho:
<remove>2010-June-3</remove>
2010-June-15
2010-June-16
2010-June-17
2010-June-3
2010-June-1
Kerry, vous voudrez peut-être fournir le paramètre '$ delimiter' pour' preg_quote', juste au cas où ... en plus d'appeler réellement 'preg_replace'. – salathe
Bon point - merci. Je trouve cela drôle/triste que je n'ai pas remplacé le code avec preg_replace –
Cela a fonctionné comme un champion. Je vous remercie! – kylex