使用PHP将HTML输出转换为纯文本

3
我正在尝试将示例HTML输出转换为纯文本,但我不知道该怎么做。我使用了file_get_contents,但我要转换的页面返回的内容很可能是相同的。
$raw = "http://localhost/guestbook/profiles.php";
$file_converted = file_get_contents($raw);
echo $file_converted;

profiles.php

<html>
    <head>
        <title>Profiles - GuestBook</title>
        <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
<body>
    <!-- Some Divs -->
    <div id="profile-wrapper">
        <h2>Profile</h2>
        <table>
            <tr>
                <td>Name:</td><td> John Dela Cruz</td>
            </tr>
            <tr>
                <td>Age:</td><td>15</td>
            </tr>
            <tr>
                <td>Location:</td><td> SomewhereIn, Asia</td>
            </tr>
        </table>
    </div>
</body>
</html>

基本上,我尝试输出像这样的内容(纯文本,没有样式)
Profile
Name: John Dela Cruz
Age: 15
Location: SomewhereIn, Asia

但是我不知道如何做。 :-( 请大家帮帮我,非常感谢。
编辑:由于我只关心页面的内容,无论它是否有样式或者只是一个纯文本,是否有一种方法可以使用file_get_contents()仅选择下面的代码?
 <h2>Profile</h2>
        <table>
            <tr>
                <td>Name:</td><td> John Dela Cruz</td>
            </tr>
            <tr>
                <td>Age:</td><td>15</td>
            </tr>
            <tr>
                <td>Location:</td><td> SomewhereIn, Asia</td>
            </tr>
        </table>

感谢Sergej Jevsejev、josnidhin和Jonathan Rich的快速回复。非常感谢。 :-) - Dan
1
请注意,建议使用 strip_tags 的人并没有完全理解它或者是不够谨慎。这会保留您的标题以及任何内联样式表或 JavaScript。虽然您没有后者,但您确实有一个标题... - Levi Morrison
我使用strip_tags函数,虽然它可以去除HTML标签,但是它返回了一个不理想的输出,例如:{ font: bold 11px Lucida Grande, Lucida Sans Unicode, Trebuchet MS, Helvetica, Arial, sans-serif; color: #045877; padding: 15px 0 0 12px; text-decoration: none; display: block; margin: 0 auto; }。 - Dan
也许使用strip_tags函数可以回答我的问题标题,因为我所看到的是纯文本,但使用strip_tags无法帮助我返回期望的输出。 - Dan
使用strip_tags或者如果需要带有HTML标签的纯文本,则使用:http://browse-tutorials.com/snippet/convert-text-or-html-plain-text-php - ram4nd
5个回答

6

使用php的strip_tags函数。

如果strip_tags函数不起作用,那么您可以使用正则表达式提取所需信息。

尝试使用PHP的preg_match函数,并将/(<td>.*?<\/td>)/作为模式。


没错,如果你不需要空格或其他符号(字符),可以参考trim - Rolice
1
这并不是“完全一样的”。它会在纯文本中保留他的标题。 - Levi Morrison
我使用了strip_tags,它虽然可以去除HTML标签,但会返回不良的输出,例如{font:bold 11px Lucida Grande,Lucida Sans Unicode,Trebuchet MS,Helvetica,Arial,sans-serif;color:#045877;padding:15px 0 0 12px;text-decoration:none;display:block;margin:0 auto; }。 - Dan

2

如果你为他添加一个例子,这将是最好的答案。现在对于初学者来说太模糊了。 - Levi Morrison
抱歉,我不知道如何使用 XML 加载文件。 - Dan
基本用法非常简单。您有PHP对象接口的经验吗? - Jonathan Rich
@Jonathan Rich:不好意思,我只是 PHP 的新手,对不起。 - Dan
没问题。看看我粘贴的例子,看看你能想出什么。 - Jonathan Rich

1
尝试使用PHP函数strip_tags。

1
我使用strip_tags函数,虽然它可以去除HTML标签,但是它返回了一个不理想的输出,例如:{ font: bold 11px Lucida Grande, Lucida Sans Unicode, Trebuchet MS, Helvetica, Arial, sans-serif; color: #045877; padding: 15px 0 0 12px; text-decoration: none; display: block; margin: 0 auto; }。 - Dan

1

试试这个,

<?php
$data = file_get_contents("your_file");
preg_match_all('|<div[^>]*?>(.*?)</div>|si',$data, $result);
print_r($result[0][0]);
?>

我已经尝试了这个,对我来说似乎有效,希望对你也有用


您好,先生,请问要将什么内容放入数据变量中? - Dan
1
只需将 http://localhost/guestbook/profiles.php 添加到您的变量中,然后对于 print_r(),您可以使用 foreach() 或类似的东西。 - Khairu Aqsara
不要使用正则表达式来解析HTML。 - Adrian Heine

0
你可以使用 strip_tags PHP 函数来实现这个功能。浏览 strip_tags 函数的 PHP 手册页面中的评论,了解如何以正确的方式使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接