Ниже приведен самый эффективный метод (по времени выполнения), чтобы отрезать все после первого К в строке. Если К не существует, возвращается полная строка. Результат - $ 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. Если вы думаете К может существовать более одного раза и хотите вырезать все после последнего вхождения, используйте 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"
Для случая нечувствительного, добавьте модификатор я так:
$sResult = preg_replace("' ".$pControl.".*'si", '', $sInputString);
Чтобы получить все мимо last К если вы считаете, что может быть более одного, добавьте дополнительно.* В начале, как это:
$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
}
Регулярные выражения могут показаться запутанным на первом но они могут быть действительно мощными и вашим лучшим другом, как только вы овладеете ими! Удачи!
Что делать, если вспомогательная строка выполняется дважды (или больше)? –
Как примечание, если вы делаете это, вы можете взять чужой контент и представить его на своем собственном сайте **, не **. – ceejayoz
Я согласен с ceejayoz. Это очень похоже на то, что вы пытаетесь использовать контент, на который у вас действительно нет доступа, и вы пытаетесь удалить любую ссылку на оригинального автора. Это было бы не очень хорошо ... – selfawaresoup