【问题标题】:PHP SimpleHTMLDomParser + Find lonely stringPHP SimpleHTMLDomParser + 查找孤独的字符串
【发布时间】:2012-05-19 07:34:14
【问题描述】:

我正在使用SimpleHTMLDomParser 浏览html 代码并找到各种东西。到目前为止一切正常,但有一个问题:

如何找到没有 ID、没有类和唯一父元素的字符串?

在我的例子中,我从 div 中提取内容开始:

$descrs    = $html->find('.show_synopsis');

foreach($descrs as $descr) { 

    echo($descr->innertext);

}

这看起来像:

<div class="show_synopsis">

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr. <b>Source:</b> LORES.

</div>

现在,是否可以从上面的示例中找到并删除LORES

由于LORES 是一个变量并且可以更改,我想知道是否可以简单地始终找到&lt;b&gt;Source:&lt;/b&gt; 旁边的单词?

我尝试了几种不同的方法,但到目前为止都没有奏效。我尝试从 this post 调整解决方案,但无法根据我的需要调整它们。

【问题讨论】:

    标签: php html html-parsing simple-html-dom


    【解决方案1】:

    试试这个:

    echo preg_replace('/(.?)<b>.*Source:.*<\/b>.*\./', '$1', $descr->innertext);
    

    【讨论】:

    • 这似乎不起作用。尽管我没有收到任何错误消息,但 &lt;b&gt; Source: &lt;/b&gt; LORES 也会“回显”并且在输出中仍然可见!
    • 你先说&lt;b&gt;Source:&lt;/b&gt;然后&lt;b&gt; Source: &lt;/b&gt;Source:前后有空格);哪一个是您需要更换的?
    • 很抱歉给您带来了困惑。它看起来完全像这样:Random text.&lt;br&gt;&lt;br&gt;&lt;b&gt;Source: &lt;/b&gt;CBS &lt;br&gt;Random text.
    • 我刚刚编辑了我的答案以涵盖有空格和没有空格的情况。请再试一次。
    【解决方案2】:

    你不能只替换你正在回显的字符串中的 LORES 吗?

    echo str_replace('LORES', '', $descr->innertext);
    

    【讨论】:

    • 哦,是的 :) 这似乎有效。最后一件事:如果我使用这种方式并且有各种字符串,我会简单地为每个循环创建一个并检查每个字符串还是有另一个(更简单)的解决方案?
    • 您可以将替换函数中的“LORES”针替换为多个针的数组。
    • 哦,如果这很重要:html 总是看起来像这样:&lt;b&gt;Source:&lt;/b&gt; LORES - 那么我什至可以总是删除&lt;b&gt;Source:&lt;/b&gt; 和它旁边的单词(在我们的示例中为 LORES)?
    • 我已经稍微修改了我的问题,但总体而言,您的解决方案工作正常 - 但如果我能找到一种方法而不必知道所有可能的字符串并将它们放入数组中,那会更舒服。
    • 在这种情况下,您可以使用 preg_replace 代替 str_replace。
    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多