我从网址获取内容并将其存储在数据库中。 在此之前,我正在以纯文本格式转换所有内容。 为此,我做到了这一点。
我想在所有段落之后添加新的额外行。
我试过但不太清楚结果..
$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 );
答案 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>
答案 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,}可确保您可以独立于现有换行符的数量添加额外的换行符。