php - 使用 Php Dom Document 从捕获的数据中删除空格和换行符

标签 php preg-replace domdocument

我正在 try catch home_impact 和 away_impact,但是当我提取文本时,它充满了空白行、空格、断行等,如下所示:

  David Luiz 
        35'






        36'

            De Gea

我也试过只提取 div id match_info 但它只生成一个包含一个元素的数组,而且它有很多换行符。我试过使用preserveWhiteSpace 和preg_replace 但没有用,知道如何避免这种情况吗?谢谢。

网址:
   <div id="match_info">
                           <div class="direct_line">
            <div class="home_impact"><div class='player_name'>David Luiz </div></div>
                <div class="minute">35'</div>
                <div class="away_impact">
                </div>
        </div> 
               <div class="direct_line">
            <div class="home_impact"></div>
                <div class="minute">36'</div>
                <div class="away_impact">
                    <div class='player_name'>De Gea</div>
                </div>
        </div> 
                <div class="direct_line">
            <div class="home_impact"></div>
                <div class="minute">38'</div>
                <div class="away_impact">
                    <div class='player_name'>Ashley Cole</div>
                </div>
               <div class="home_impact"><div class='player_name'>Juan Mata</div>/div>
                <div class="minute">35'</div>
                <div class="away_impact">
                </div>
        </div> 

PHP:
$html = file_get_contents($url);
$doc = new DOMDocument();
//$doc->preserveWhiteSpace = FALSE;
@$doc->loadHTML($html);
$xpath = new DOMXpath ($doc);
$expresionHome="//div[@class='home_impact']";
$expresionAway="//div[@class='away_impact']";
$nodesHome = $xpath->evaluate($expresionHome);
$nodesAway = $xpath->evaluate($expresionAway);
for ($i=0;$i<$nodesHome->length;$i++)
{
echo $nodesHome->item($i)->nodeValue;
echo $nodesAway->item($i)->nodeValue;
}

最佳答案

您只能使用 DOMDocument 而不需要对节点内容进行任何修剪或使用正则表达式。考虑以下示例,请注意 DOMDocument 属性 保留空白空间 格式输出 (如果你想漂亮地打印它)

// DOMDocument with unformatted content
$unformatteddocument= new DOMDocument("1.0", "utf-8");
$unformatteddocument->load(PATH_OF_UNFORMATTED_XML);

$document = new DOMDocument("1.0", "utf-8");
$document->preserveWhiteSpace = false;
$document->formatOutput = true;
$document->loadXML($unformatteddocument->saveXML());
$document->save(PATH_FOR_FORMATTED_XML);

关于php - 使用 Php Dom Document 从捕获的数据中删除空格和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25486687/

相关文章:

php - 开关条件评估不正确为零

php - 运行 PHP cronjob 超过 15 分钟

php - 如何遍历 $_POST 数组并将数据发送到不同的 MySQL 表

php - REGEX 协助嵌套模式?

替换字符串中的字符代码 8217 时出现 PHP 意外输出

browser - 使用 WebBrowser.DocumentText 和 DomDocument.DesignMode 的应用程序在 IE8 中工作,在 IE9 中不起作用

php - 按名称获取元素 - HTML DOM 短语

php - 使用 cURL 从 URL 保存 Facebook 个人资料图片无法正常工作 2018 年 3 月 27 日之后

php - 使用 PHP 用标签包装一大块文本

javascript - 如何删除影响 React 元素的 Jquery 文档单击监听器?