Как вывести текст до определенной строки?

Хочу вывести все что идет до определенной строки.

Делаю так:

$content = stristr($text, '<h2>Определенная строка 1', true);
$content = stristr($content, '<h2>Определенная строка 2', true);

И есть в текст нет одной из строк - вообще ничего не выводит.

Как лучше это сделать?

Буду благодарен за помочь!


Ответы (1 шт):

Автор решения: Zhihar

Если я правильно понял - то у вас ситуация:

  1. есть некоторый текст
  2. есть набор строк в тексте (или даже отсутствующие в тексте)
  3. надо выделить текст от начала до первой встреченной строки и если есть строки, которые отсутствуют в тексте - ничего не выделять

Если это так, то алгоритм должен быть такой (напишу псевдокодом):

// найти минимальную позицию строк в тексте
min_pos = len(text)

for (str_index = 0; str_index < str_amount; str_index++)
{
    local_pos = find_in_str(text, strings[str_index]);

    if (local_pos < min_pos)
        min_pos = local_pos;
}

// выделить текст до найденной позиции
if (min_pos > -1)
    content = text.substr(0, min_pos)
else
    content = "нифига"

на php (по памяти пишу, так что где-то мог и ошибиться)

// найти минимальную позицию строк в тексте
$min_pos = strlen($text);

foreach ($strings as &$str) {

    $local_pos = strpos($text, $str);
    
    if ($local_pos < $min_pos)
        $min_pos = $local_pos;
}
    
// выделить текст до найденной позиции
if (min_pos > 0)
    $content = substr($text, 0, $min_pos - 1);
else
    $content = "нифига";
→ Ссылка