在文字中,我想删除最后一次出现的<br>
和字符串之间的所有内容。
假设我有这样的文字:
Lorem ipsum dolor sit amet, <br>
consectetur adipisicing elit, <br>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br>
Some text I want to remove because it is useless.
我想删除最后<br>
和“无用”之间的所有内容。 (包括分隔符)。
预期结果将是:
Lorem ipsum dolor sit amet, <br>
consectetur adipisicing elit, <br>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
答案 0 :(得分:1)
$text = <<< EOD
Lorem ipsum dolor sit amet, <br>
consectetur adipisicing elit, <br>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br>
Some text I want to remove because it is useless.
EOD;
echo(preg_replace('/(?s)<br>(?!.*<br>).*useless/', '', $text));
以上代码打印:
Lorem ipsum dolor sit amet, <br>
consectetur adipisicing elit, <br>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. .
使用否定前瞻查找(?!.*<br>)
查找上一个<br>
。
答案 1 :(得分:1)
$modified_text = preg_replace('/^(.*)<br>(.*)$/s', '$1', $original_text);
这应创建一个modified_text
变量,其中包含<br>
中最后一个original_text
的所有内容。
答案 2 :(得分:0)
你可以这样做:
$txt = preg_replace('~<br>(?>[^<u]++|<(?!br>)|u(?!seless))*(?>useless\.?|$)~', '', $txt);
感兴趣的:
<
或u
时)