Ниже представлен наиболее эффективный метод (по времени выполнения), чтобы обрезать все после первого By в строке. Если By не существует, возвращается полная строка. Результат в $ 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"
Если вы не хотите учитывать регистр символов, используйте stripos вместо strpos. Если вы думаете, что By может существовать более одного раза и хотите вырезать все после последнего вхождения, используйте strrpos .
Ниже приведен менее эффективный метод, но он занимает меньше места в коде. Этот метод также более гибкий и позволяет выполнять любые регулярные выражения.
$sInputString = "Posted On April 6th By Some Dude";
$pControl = "By";
$sResult = preg_replace("' ".$pControl.".*'s", '', $sInputString);
//$sResult = "Posted On April 6th"
Например, если вы хотите удалить все после дня:
$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"
Если регистр не учитывается, добавьте модификатор i следующим образом:
$sResult = preg_replace("' ".$pControl.".*'si", '', $sInputString);
Чтобы получить все, что осталось за последним К , если вы думаете, что их может быть больше одного, добавьте дополнительный. * В начале, например:
$sResult = preg_replace("'.* ".$pControl.".*'si", '', $sInputString);
Но вот также очень мощный способ, которым вы можете использовать preg_match, чтобы делать то, что вы пытаетесь сделать:
$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
}
Поначалу регулярные выражения могут показаться запутанными, но они могут стать действительно мощными и вашим лучшим другом, когда вы их освоите! Удачи!