从字符串的开头和结尾删除 <br> 标记


Remove <br> tags from the beginning and end of a string

给定

这样的字符串(例如),我将如何从字符串的开头和结尾删除所有中断(<br>,<br />, and any other form)标签?

原始字符串:

<br>Hello, World! https://www.youtube.com/watch?v=NU7W7qe2R0A<br><br>

输出:

Hello, World! https://www.youtube.com/watch?v=NU7W7qe2R0A

如果原始字符串在字符串中间有<br>标签,即:

<br>Hello, World!<br><br>https://www.youtube.com/watch?v=NU7W7qe2R0A<br><br>

它应该输出:

Hello, World!<br><br>https://www.youtube.com/watch?v=NU7W7qe2R0A

我将如何实现此结果?

您可以使用preg_replace和像这样的正则表达式。

$s = '<br><br /><Br  ><br   />Hello, World!<br><br />testing 123<br  ><BR   /><br><br />';
$stripped = preg_replace('/^(<br's*'/?>)*|(<br's*'/?>)*$/i', '', $s);
var_dump($stripped);

输出:

string(57) "Hello, World!<br><br />testing 123"

要在字符串的开头和结尾匹配<br>,请使用:

(?:'A<br's*/?'s*>)+|(?:<br's*/?'s*>)+$
$result = preg_replace('%(?:'A<br's*/?'s*>)+|(?:<br's*/?'s*>)+$%i', '', $text);

更通用的正则表达式是:

(?:'A<[a-z'd]+'s*/?'s*>)+|(?:<[a-z'd]+'s*/?'s*>)+$
$result = preg_replace('%(?:'A<[a-z'd]+'s*/?'s*>)+|(?:<[a-z'd]+'s*/?'s*>)+$%i', '', $text);

我使用这个:

<?
$data = '<br>Hello, World!<br><br><br /><br>';
$filter = array('<br>','<br />'); 
$data = str_replace($filter,'',$data);
var_dump($data);
这是我

在我的项目中使用的:

Code below will handle : <br>, <br >, <br   >, <br/>, <br />, <br   />
$data = "<br><br ><br/><br />test1<br><br  ><br />test2<br><br ><br/><br />";
$str = preg_replace('/^(<br's*?'/?>)+|(<br's*'/?>)+$/', '', $data);
echo $str;