PHP:从字符串中删除多余的换行符

时间:2015-02-12 22:25:18

标签: php replace

我有一些带有一些格式错误的html的数据库条目。我想通过以下方式清理它:

  1. 删除所有空行。
  2. 从字符串末尾删除所有换行标记(<br><br />
  3. 删除任何br标记的变体,如果它跟在</p>之后,即使它位于下一行。
  4. 我对正则表达式相当不错,但是在常规替换时非常糟糕,所以我需要一些关于如何以良好方式执行此操作的输入。

    请参阅下面的示例字符串:

    <br>
    <br>
    
    
    
    <br>
    <br>
    <p>Highburys torsdagsquiz handler om
    &aring; kunne litt om det meste, og litt flaks.</p>
    <br>
    <p>Juks og bruk av hjelpemidler er strengt forbudt , og
    medf&oslash;rer diskvalifikasjon og van&aelig;re.</p>
    <br>
    <p>Hvert lag kan stille med inntil 5 deltagere, alle kan delta og
    kommer du alene er det alltid et lag som kan ha bruk for deg. Det
    er ingen forh&aring;ndsp&aring;melding.</p>
    <br>
    <p>Det stilles 50 sp&oslash;rsm&aring;l fordelt p&aring; 2 omganger
    om alt mellom himmel og jord. Vinnerlaget f&aring;r en flott
    premie!</p>
    <br>
    <p>Moroa starter kl. 19.00. Det kan bli trangt om plassene,
    s&aring; det er en god ide og v&aelig;re tidlig ute.</p>
    <br>
    <p>Lykke til, vi sees!</p>
    <br/>
    <br>
    
    
    <br>
    <br>
    <br>
    <br>
    <br>
    

    想要的输出应该是这样的:

    <p>Highburys torsdagsquiz handler om
    &aring; kunne litt om det meste, og litt flaks.</p>
    <p>Juks og bruk av hjelpemidler er strengt forbudt , og
    medf&oslash;rer diskvalifikasjon og van&aelig;re.</p>
    <p>Hvert lag kan stille med inntil 5 deltagere, alle kan delta og
    kommer du alene er det alltid et lag som kan ha bruk for deg. Det
    er ingen forh&aring;ndsp&aring;melding.</p>
    <p>Det stilles 50 sp&oslash;rsm&aring;l fordelt p&aring; 2 omganger
    om alt mellom himmel og jord. Vinnerlaget f&aring;r en flott
    premie!</p>
    <p>Moroa starter kl. 19.00. Det kan bli trangt om plassene,
    s&aring; det er en god ide og v&aelig;re tidlig ute.</p>
    <p>Lykke til, vi sees!</p>
    

1 个答案:

答案 0 :(得分:0)

它可能会有所帮助:

function cleanText($string) {
   $str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);  // OR $str = trim(preg_replace('/\s\s+/', ' ', $string));
   $str = strip_tags($str, '<p>');
   return $str;
}

echo cleanText($string);