我知道:
preg_replace('<br\s*\/?>', '', $string);
Run Code Online (Sandbox Code Playgroud)
将删除$ string中的所有br标签...
我们怎样才能删除所有<br><br/><br />标签,只要它们位于$ string的最开头?(在我的例子中,$ string是带有各种标签的HTML代码......)
Kon*_*lph 19
只需添加一个合适的锚点(^):
preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $string);
Run Code Online (Sandbox Code Playgroud)
这将匹配字符串开头的多个<br>s .
(?:…)是一个非捕获组,因为我们只使用括号来对表达式进行分组,而不是捕获它.修饰符并不是绝对必要的 - (…)也可以正常工作,但正则表达式引擎必须做更多的工作,因为它需要记住每个捕获命中的位置和长度.
$string = preg_replace('/^\s*(?:<br\s*\/?>\s*)*/i', '', $string);
Run Code Online (Sandbox Code Playgroud)
这还将删除换行标记之前、之间和之后的前导空白字符。
一些解释:
^\s* 将匹配字符串开头的任何空白字符(?:<br\s*\/?>\s*)*将匹配零个或多个BR标签(HTML 和 XHTML)后跟可选的空白字符