【问题标题】:Preg_replace <br> one time only before the first letter / wordpreg_replace <br> 仅在第一个字母/单词之前一次
【发布时间】:2015-10-27 12:04:29
【问题描述】:

我知道如何替换第一次出现的&lt;br&gt;。例如:

$text = preg_replace('/<br>/','',$text,1);

但是,我需要删除第一个 &lt;br&gt; 一次仅在第一个字母/单词之前

删除如果:

<br>
A storm is coming...

不要删除 if(即使是第一次出现):

A storm is coming...
<br>

【问题讨论】:

  • 试试$text = preg_replace('/&lt;br&gt;(?=\s*\w)/','',$text,1);
  • “字母/单词”是什么意思?可以是Ő吗?
  • 为什么不使用$text = preg_replace('/^(\r|\t|\n|\s)*&lt;br&gt;/g','',$text);
  • @stribizhev “第一个字母”是指 A, I (A car, I am)。
  • 然后 Avinash 已经发布了一个可行的解决方案。

标签: php regex preg-replace


【解决方案1】:

使用肯定的前瞻断言来检查&lt;br&gt; 后面是否跟一个单词字符。

$text = preg_replace('/<br>(?=\s*\w)/','',$text,1);

$text = preg_replace('/<br>(?=\s*[a-z])/i','',$text,1);

【讨论】:

  • 如果这是我的页面的特殊性,我不知道,但只有@morels 示例有效,即$text = preg_replace('/^(\r|\t|\n|\s)*&lt;br&gt;/g','',$text);
【解决方案2】:

为什么不使用$text = preg_replace('/^(\r|\t|\n|\s)*&lt;br&gt;/g','',$text);

如果字符串以 0 个或多个回车符/空格/制表符开头,后跟 &lt;br&gt;,则会删除 &lt;br&gt;

它就像一个字符串修剪加上一个&lt;br&gt; 去除剂。比preg_replace('/^&lt;br&gt;*/g','',$text) 之类的简单&lt;br&gt; 卸妆更高效

【讨论】:

  • 通常 g 代表“全局”,即它分析所有输入字符串。在您的情况下,它是可选的,因为您只需要匹配第一次出现。
  • 无论如何,如果答案对您的问题有效,您很高兴接受答案并关闭主题。如果您需要更具体的答案,您也很乐意在问题和 cmets 方面更具体。
猜你喜欢
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2012-07-15
  • 2014-12-04
  • 1970-01-01
相关资源
最近更新 更多