在所有段落之后添加新的额外行

时间:2013-08-27 13:56:15

标签: php string string-parsing plaintext

我从网址获取内容并将其存储在数据库中。 在此之前,我正在以纯文本格式转换所有内容。 为此,我做到了这一点。

我想在所有段落之后添加新的额外行

我试过但不太清楚结果..

$string = "<p>As a result, his move to Microsoft has raised many questions about the Redmond-based company's plans in the PC gaming space.</p><p>With the Xbox One launch looming, Microsoft has greatly de-emphasized PC gaming of late. </p><p>Holtman's hiring could signal a renewed emphasis on the computer, though.</p>

看起来像Valve的一个人,在我看来,在游戏领域没有同行,相对于真正强大的B-to-C [企业对消费者]关系可能表明阿卡迪亚投资公司(Arcadia Investment Corp)董事总经理约翰泰勒(John Taylor)表示,该领域的重要性有所提升。

“;

$search = array('@<script[^>]*?>.*?</script>@si', // Strip out javascript    
            '@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags    
            '@<style[^>]*?>.*?</style>@siU', // Strip style tags properly    
            '@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments including CDATA
        );

// remove excess whitespace        
// looks for a one or more spaces and replaces them all with a single space.        
$string = preg_replace($search, '', $string);        
$string = preg_replace('/ +/', ' ', $string);        
// check for instances of more than two line breaks in a row    
// and then change them to a total of two line breaks          
$string = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\r\n\r\n", $string);
file_put_contents('testing.txt', $string );

2 个答案:

答案 0 :(得分:1)

你没有给出想要的输出,但我认为你需要类似的东西:

<p>Text</p>\r\n
<p>Another text</p>\r\n

不要使用繁重的REG EXP,只需在</p>上爆炸并添加额外的行:

$array = explode ('</p>', $string);
new_string = '';
$temp = count ($array);
foreach ($array as $key => $paragraph)
{
    if ($key !== $temp - 1);
        $new_string .= $paragraph . "</p>\r\n";
    else
        $new_string .= $paragraph;
}

$ new_string var应该是你要找的,告诉我,如果我是对的。 它会在每个 </p>

之后添加\ r \ n

答案 1 :(得分:1)

用于添加额外换行符的正则表达式有错误 - 正确的版本是:

$string = preg_replace('/(?:(?:\r\n|\r|\n)\s*){1,}/s', "\r\n\r\n", $string);

区别在于:{2}(因为它在您的代码中)确保只有两个换行符才添加额外的换行符。 (它需要两个匹配表达式(?:(?:\ r \ n | \ r | \ n)\ s *)。)

将{2}更改为{1,}可确保您可以独立于现有换行符的数量添加额外的换行符。