我不知道你的问题的一些细节,所以我的回答可能不合适。您可以根据需要解析的内容的大小来决定这不是一个选项。此外,从问题中不清楚 html 内容的位置,这就是为什么我编写了这个不使用 DOM 解析的解决方案。
一种可能的解决方案可能是获取要在数组中解析的行。之后,您可以过滤数组,从结果中删除与您的规则不匹配的行。
一个样本是:
//this is the content
$text = 'Title: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Snippet: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Category: Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
//get the lines from your input as an array.. you could acheive this in a different way if, for example, you are reading from a file
$lines = explode(PHP_EOL, $text);
// apply a cusom function to filter the lines (remove the ones that don't match your rule)
$results = array_filter($lines, 'test_content');
//show the results
echo '<pre>';
print_r($results);
echo '</pre>';
//custom function here:
function test_content($line)
{
//case insensitive search, notice stripos;
// type strict comparison to be sure that it doesn't fail when the element is found right at the start
if (false !== stripos($line, 'Snippet'))
{
return true;
}
return false;//these lines will be removed
}
这段代码将只返回 $results 数组中的一个元素,即第二行
你可以在这里看到它:http: //codepad.org/220BLjEk