使用PHP转换混合HTML文本

时间:2012-10-19 12:41:17

标签: php html regex parsing

  

可能重复:
  How to parse and process HTML with PHP?

有人可以帮我找到解析包含HTML和常规文本的文本的解决方案。例如

This is my awesome <b>text</b>. Now <a href="http://google.com">starts</a> a new line...

<img src="http://example.com/image.png"/><br>
<br>
I push news to http://twitter.com .

这应该成为

This is my awesome <b>text</b>. Now <a href="http://google.com">starts</a> a new line...<br>
<br>
<img src="http://example.com/image.png"/><br>
<br>
I push news to <a href="http://twitter.com">twitter.com</a> .

我主要是寻找魔法正则表达式替换函数......目前我做

$text = preg_replace("@(src|href)=\"https?://@i",'\\1="', $description);
$text = nl2br(preg_replace("@(((f|ht)tp:\/\/)[^\"\'\>\s]+)@",'<a href="\\1" target="_blank">\\1</a>', $text));

2 个答案:

答案 0 :(得分:3)

nl2br很好地解决了这个问题。

file_get_contents('filename.html');
nl2br($text);

它专为您的需求而设计。

如果您担心双\n或已存在的<br />元素,则必须为输入文本(如果您可以控制它)或预处理设计方案。

在应用\n\n之前,可能会将所有\n替换为<br />\n,将所有\n替换为nl2br

答案 1 :(得分:0)

你可以试试这个

$text = your source text
$text = preg_replace(
    array('/\n/m',  '/\<br\>\<br\>/m' '/\<br\>$/'),
    array("\n<br>", "<br>", ''),
    $text
);

再见