如果给出这样的字符串(例如),我将如何从 字符串的开头和结尾删除所有break(<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
我将如何实现这一结果?
答案 0 :(得分:8)
您可以使用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"
答案 1 :(得分:1)
要在字符串的开头和结尾匹配<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);
答案 2 :(得分:0)
我用这个:
<?
$data = '<br>Hello, World!<br><br><br /><br>';
$filter = array('<br>','<br />');
$data = str_replace($filter,'',$data);
var_dump($data);
答案 3 :(得分:0)
这是我在项目中使用的内容:
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;