繁体   English   中英

php:从字符串的开头修剪br标签?

[英]php: trim br tags from the beginning of a string?

我知道:

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

将删除$ string中的所有br标签...

我们怎样才能删除所有<br><br/><br />标签,只有当他们在$字符串的开始? (在我的例子中,$ string是带有各种标签的HTML代码......)

只需添加一个合适的锚点( ^ ):

preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $string);

这将匹配字符串开头的多个<br>

(?:…)是一个非捕获组,因为我们只使用括号来对表达式进行分组,而不是捕获它。 修饰符并不是绝对必要的 - (…)也可以正常工作,但正则表达式引擎必须做更多的工作,因为它需要记住每个捕获命中的位置和长度。

您在正则表达式中忘记了PCRE分隔符 试试这个:

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

这也将删除换行符之前,之间和之后的前导空白字符。

一些解释:

  • ^\\s*将匹配字符串开头的任何空格字符
  • (?:<br\\s*\\/?>\\s*)*将匹配零个或多个BR标记(HTML和XHTML),后跟可选的空白字符
$string = preg_replace( '@^(<br\\b[^>]*/?>)+@i', '', $string );

应该匹配:

<br>
<br/>
<br style="clear: both;" />
etc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM