Im Folgenden finden Sie die effizienteste Methode (nach Laufzeit), um alles nach dem ersten By in einer Zeichenfolge abzuschneiden . Wenn By nicht vorhanden ist, wird die vollständige Zeichenfolge zurückgegeben. Das Ergebnis ist in $ sResult.
$sInputString = "Posted On April 6th By Some Dude";
$sControl = "By";
//Get Position Of 'By'
$iPosition = strpos($sInputString, " ".$sControl);
if ($iPosition !== false)
//Cut Off If String Exists
$sResult = substr($sInputString, 0, $iPosition);
else
//Deal With String Not Found
$sResult = $sInputString;
//$sResult = "Posted On April 6th"
Wenn Sie nicht zwischen Groß- und Kleinschreibung unterscheiden möchten , verwenden Sie Stripos anstelle von Strpos. Wenn Sie der Meinung sind, dass By möglicherweise mehr als einmal vorhanden ist und nach dem letzten Auftreten alles ausschneiden möchte, verwenden Sie strrpos .
Im Folgenden finden Sie eine weniger effiziente Methode, die jedoch weniger Codeplatz beansprucht. Diese Methode ist auch flexibler und ermöglicht es Ihnen, jeden regulären Ausdruck zu verwenden.
$sInputString = "Posted On April 6th By Some Dude";
$pControl = "By";
$sResult = preg_replace("' ".$pControl.".*'s", '', $sInputString);
//$sResult = "Posted On April 6th"
Wenn Sie beispielsweise nach dem Tag alles entfernen möchten:
$sInputString = "Posted On April 6th By Some Dude";
$pControl = "[0-9]{1,2}[a-z]{2}"; //1 or 2 numbers followed by 2 lowercase letters.
$sResult = preg_replace("' ".$pControl.".*'s", '', $sInputString);
//$sResult = "Posted On April"
Wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen, fügen Sie den Modifikator i wie folgt hinzu:
$sResult = preg_replace("' ".$pControl.".*'si", '', $sInputString);
Um alles über den letzten bekommen von , wenn Sie denken , es könnte mehr sein als ein, fügen Sie ein extra * am Anfang so.:
$sResult = preg_replace("'.* ".$pControl.".*'si", '', $sInputString);
Aber hier ist auch eine wirklich mächtige Möglichkeit, mit preg_match das zu tun, was Sie vielleicht versuchen:
$sInputString = "Posted On April 6th By Some Dude";
$pPattern = "'Posted On (.*?) By (.*?)'s";
if (preg_match($pPattern, $sInputString, $aMatch)) {
//Deal With Match
//$aMatch[1] = "April 6th"
//$aMatch[2] = "Some Dude"
} else {
//No Match Found
}
Reguläre Ausdrücke mögen zunächst verwirrend erscheinen, aber sie können sehr mächtig und Ihr bester Freund sein, wenn Sie sie beherrschen! Viel Glück!