Je me demande comment je peux supprimer tout ce qui suit une certaine sous-chaîne en PHP.
ex :
Posted On April 6th By Some Dude
Je voudrais qu'il supprime tout le texte incluant et suivant la sous-chaîne "By".
Merci
Je me demande comment je peux supprimer tout ce qui suit une certaine sous-chaîne en PHP.
ex :
Posted On April 6th By Some Dude
Je voudrais qu'il supprime tout le texte incluant et suivant la sous-chaîne "By".
Merci
Essayez ça.
function strip_after_string($str,$char)
{
$pos=strpos($str,$char);
if ($pos!==false)
{
//$char was found, so return everything up to it.
return substr($str,0,$pos);
}
else
{
//this will return the original string if $char is not found. if you wish to return a blank string when not found, just change $str to ''
return $str;
}
}
Utilisation :
<?php
//returns Apples
$clean_string= strip_after_string ("Apples, Oranges, Banannas",",");
?>
La réponse d'Austin fonctionne pour votre exemple de cas.
De manière plus générale, vous feriez bien de vous pencher sur la question des fonctions d'expression régulière lorsque la sous-chaîne sur laquelle vous effectuez le fractionnement peut être différente d'une chaîne à l'autre :
$variable = preg\_replace('/By.\*/', '', $variable);
preg_replace
offre un moyen :
$newText = preg_replace('/\bBy\b.*$/', '', $text);
Le \b ' correspond à la limite d'un mot (il est de largeur zéro et correspond entre les caractères du mot et ceux qui ne le sont pas), ce qui garantit qu'il ne correspondra qu'à un mot complet. Bien que le mot cible ne fasse partie d'aucun autre mot dans l'exemple, il peut généralement apparaître comme partie d'un autre mot (par exemple, "by" dans "Babylon Revisited", de F. Scott Fitzgerald, ou "Bloom County Babylon" de Berkely Breathed).
Le '.*$' correspond à tout le texte jusqu'à la fin. Le '$' correspond à la fin de la chaîne et, bien que cela ne soit pas strictement nécessaire pour l'exactitude, documente l'intention de la regex (qui est bien connue pour devenir difficile à lire).
La correspondance des expressions régulières commence au début de la chaîne de caractères, ce qui signifie que le remplacement se fera à partir de la première correspondance. Pour savoir comment remplacer la correspondance en commençant par la dernière, voir " Comment remplacer uniquement la dernière correspondance d'une chaîne avec preg_replace ? "
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.