开发者

Remove <br>'s from the end of a string

As the title says I have a string like this:

$string = 开发者_如何学Python"Hello World<br>hello world<br><br>";

I would like to get rid of the <br>s at the end of the string so it looks as follows:

$string = "Hello World<br>hello world";

I tried this:

preg_replace('/^(<br>)*/', "", $string);

but it didn't work. Maybe someone knows the right regex.


You're close, you used ^ at the start of the regexp, which means "match the start of the string." You want $ at the end, which means, "Match the end of the string."

preg_replace('/(<br>)+$/', '', $string);


Just for anyone else who comes along this, like I, looking for a way to remove any all break tags from the end of a string, including:

<br> <br/> <br /> <br              /> <br      >

I used:

$string = preg_replace('#(( ){0,}<br( {0,})(/{0,1})>){1,}$#i', '', $string);

to great effect. This will also strip them, if they have white-space between each. You'll need to adjust for any \n\r etc, if that's what you require.


I think, that the best solution for removing all spaces and BRs from the end of the string is this:

preg_replace('#(\s*<br\s*/?>)*\s*$#i', '', $string);

Test here:

$arr = [
  '<something>else that</needs>to <br>  <BR      />      <br/>  ',
  '<something>else that</needs>to <br>',
  '<something>else that</needs>to    <br/>  ',
  '<something>else that</needs>to     ',
  '<something>else that</needs>to<br/>',
  ];

foreach ($arr as $string) {
 var_dump(preg_replace('#(\s*<br\s*/?>)*\s*$#i', '', $string));
}

This prints:

test.php:11:string '<something>else that</needs>to' (length=30)
test.php:11:string '<something>else that</needs>to' (length=30)
test.php:11:string '<something>else that</needs>to' (length=30)
test.php:11:string '<something>else that</needs>to' (length=30)
test.php:11:string '<something>else that</needs>to' (length=30)


Try preg_replace('/(<br>)+$/', "", $string);

EDIT: Oops, this should work now.


Regular expressions are powerful, but I think this case is more simple, rtrim should work

$string = rtrim($string,'<br>');


You could try the strip_tags function:

http://php.net/manual/en/function.strip-tags.php

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜