如何使用php调用页面更改/删除字符串?

时间:2013-06-12 15:49:18

标签: php html html-parsing

我正在使用当前功能:

function callframe(){
    $ch = curl_init("file.html");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    echo curl_exec($ch);
    curl_close($ch);
}

然后我调用callframe(),它出现在我的php页面上。 我们假设这是file.html内容:

<html>
<body>

   [...]

<td class="bottombar" valign="middle" height="20" align="center" width="1%" nowrap> 

   [...]

<a href="link.html">Link</a>

   [...]

</body>
</html>
  • 我如何删除<td class="bottombar" valign="middle" height="20" align="center" width="1%" nowrap>行?
  • 我如何删除一个参数,如height参数,或将对齐中心更改为左?
  • 如何在我的href
  • 中的link.html之前插入“http://www.whatever.com/

感谢您的帮助!

ps:您可能想问为什么我不直接更改file.html。那么,毫无疑问。

3 个答案:

答案 0 :(得分:1)

为了让您入门,而不仅仅是回显curl_exec,请先存储它,以便您可以使用它:

$html = curl_exec($ch);

现在,将其加载到DOMDocument,然后您可以使用它来解析和进行更改:

$dom = new DOMDocument();
$dom->loadHTML($html);

现在,对于第一项任务(删除该行),它看起来像是:

//
// rough example, not just copy-paste code
//

$tds = $dom->getElementsByTagname('td'); // $tds = DOMNodeList
foreach ($tds as $td) // $td = DOMNode
{
    // validate this $td is the one you want to delete, then
    // call something like:
    $parent = $td->parentNode;
    $parent->removeChild($td);
}

也可以执行任何其他类型的处理。

然后,最后致电:

echo $dom->saveHTML();

答案 1 :(得分:0)

您可以将输出作为一个变量,并可以使用字符串函数来完成您的工作

function callframe(){
 $ch = curl_init("file.html");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 $result = curl_exec($ch);
 $result = str_replace("link.html","http://www.whatever.com/link.html", $result);
 // other replacements as required
 curl_close($ch);
}

答案 2 :(得分:0)

这就是我做到的。 更改例如选项字段(用于搜索字符串) 这会更改我的选项列表的第二个值,并将其替换为我想要的值。

require('simple_html_dom.php');

$html = file_get_html('fileorurl');

$e = $html->find('option', 0) ->next_sibling ();
$e->outertext = '<option value="WTR">Tradition</option>';

然后 echo $ html;