我无法消除HTML的一些杂散部分,而这些杂散部分最终以自动生成的WordPress网站摘录结尾。例如,在摘录的开头,我会看到:
href =” https://stackoverflow.com”>节选文本从此处开始...
或摘录的结尾:
因此,我正在寻找的是一种方法,该方法可以匹配并删除摘录开头以“>”结尾的任何非空格字符的字符串,或在结尾处的任何非空格字符的字符串。以“
如果摘录中不包含<
和>
字符,则可以采用两种方法。一个使用preg_replace
删除问题中描述的句段,另一个使用preg_match
来查找>
和<
之间的一组字符。例如:
$excerpts = array('href=”https://stackoverflow.com”>Excerpt text starts here... ...excerpt text ends here <a',
'href=”https://stackoverflow.com”>Excerpt text starts here... ...excerpt text ends here',
'Excerpt text starts here... ...excerpt text ends here <a',
'Excerpt text starts here... ...excerpt text ends here'
);
foreach ($excerpts as $excerpt) {
preg_match('/(?<=^|>)[^<>]+(?=<|$)/', $excerpt, $matches);
echo $matches[0] . PHP_EOL;
}
foreach ($excerpts as $excerpt) {
echo preg_replace(array('/.*>/', '/<.*$/'), '', $excerpt) . PHP_EOL;
}
输出:
Excerpt text starts here... ...excerpt text ends here