preg_match以删除杂项HTML

问题描述 投票:0回答:1

我无法消除HTML的一些杂散部分,而这些杂散部分最终以自动生成的WordPress网站摘录结尾。例如,在摘录的开头,我会看到:

href =” https://stackoverflow.com”>节选文本从此处开始...

或摘录的结尾:

...摘录文字在这里结束

因此,我正在寻找的是一种方法,该方法可以匹配并删除摘录开头以“>”结尾的任何非空格字符的字符串,或在结尾处的任何非空格字符的字符串。以“

php regex preg-replace
1个回答
0
投票

如果摘录中不包含<>字符,则可以采用两种方法。一个使用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 

Demo on 3v4l.org

© www.soinside.com 2019 - 2024. All rights reserved.