У меня есть код, который скрещивает строку между двумя другими строками (сэндвич). Он работает, но мне нужно перебирать различные «сэндвич-строки».Простые скрещивания данных с использованием PHP loop/foreach
//needle in haystack
$result 'sandwich: Today is a nice day.
sandwich: Today is a cloudy day.
sandwich: Today is a rainy day.
sandwich type 2: Yesterday I had an awesome time.
sandwich type 2: Yesterday I had an great time.';
$beginString = 'today is a';
$endString = 'day';
function extract_unit($haystack, $keyword1, $keyword2) {
$return = array();
while($a = strpos($haystack, $keyword1, $a)) { // loop until $a is FALSE
$a+=strlen($keyword1); // set offset to after $keyword1 word
if($b = strpos($haystack, $keyword2, $a)) { // if found $keyword2 position's
$return[] = trim(substr($haystack, $a, $b-$a)); // put result to $return array
}
}
return $return;
}
$text = $result;
$unit = extract_unit($text, $beginString, $endString);
print_r($unit);
//$unit returns= nice, cloudy and rainy
мне нужно перебрать различные типы предложений/бутербродов и быть в состоянии охватить все прилагательные (хороший облачный дождливый удивительный большой):
//needle in haystack
$result 'sandwich: Today is a nice day.
sandwich: Today is a cloudy day.
sandwich: Today is a rainy day.
sandwich type 2: Yesterday I had an awesome time.
sandwich type 2: Yesterday I had an great time.';
$beginString1 = 'today is a';
$endString1 = 'day';
$beginString2 = 'Yesterday I had an';
$endString2 = 'time';
[scaping code with loop...]
print_r($unit);
Это цель, чтобы в итоге этот массив:
Array ([0] => nice [1] => cloudy [2] => rainy [3] => awesome [4] => great)
Любые идеи? Очень признателен.
@ideone - большое спасибо! ... но я получаю сообщение об ошибке: preg_match_all ($ reg, $ haystack, $ return); в котором говорится: «Ошибка анализа: синтаксическая ошибка, неожиданная« preg_match_all »(T_STRING) в«. Думаю, это сработает для вас? - Я попробовал отредактированную версию, где стога сена - единственная строка. – ven
У вас есть онлайн-пример в конце, и вы можете разблокировать этот код и сделать свои собственные тесты. Какая у вас версия PHP? – ElChiniNet
Я забыл «;» в конце предыдущей строки в примере кода это была моя ошибка. Я исправил это. – ElChiniNet