使用Simple PHP Parser在给定的URL中修改元素内容

时间:2016-10-17 13:11:10

标签: php

以下是我的代码。 PHP代码

<?php
include('simple_html_dom.php');
$id=$_GET['id'];//Some URL like index.php
$dom = file_get_contents($id);
$html = file_get_html($id);
?>
<html lang="en" class="wide smoothscroll wow-animation">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Update Content</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="format-detection" content="telephone=no"/>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/style1.css">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
</head>
<div class="container">
  <form class="form-horizontal">
    <div class="form-group">
      <label class="control-label col-sm-2" for="email">Page Name</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="page_name" value="<?php echo $filename;?>" disabled>
      </div>
    </div>
    <?php 
foreach($html->find('meta[name=keywords]') as $element) {
?>    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">Meta Keyword</label>
      <div class="col-sm-10">
        <textarea class="form-control" id="meta_keyword"><?php echo $element->content; ?></textarea>
      </div>
    </div>
    <?php } 
    foreach($html->find('meta[name=description]') as $element) {
?>  
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">Meta Description</label>
      <div class="col-sm-10">
        <textarea class="form-control" id="meta_description"><?php echo $element->content; ?></textarea>
      </div>
    </div>
     <?php } foreach($html->find('title') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">Title</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="title" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h1') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H1</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h1" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h2') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H2</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h2" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h3') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H3</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h3" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h4') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H4</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h4" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h5') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H5</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h5" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } foreach($html->find('h6') as $element) {?>
    <div class="form-group">
      <label class="control-label col-sm-2" for="pwd">H6</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="h6" value="<?php echo $element->innertext; ?>">
      </div>
    </div>
    <?php } ?>
    <br/><br/>
  <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10">
      <button class="btn btn-lg btn-primary" id="content_submit" type="button" style="color:#fff">Submit</button>
    </div>
  </div>

  </form>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><script src="js/jquery.form.js"></script>

我曾用过这个http://simplehtmldom.sourceforge.net/

在这里,我可以使用该代码获取所有HTML元素。我想使用更新的文本修改相同的HTML元素。但是我不能从任何地方获得任何引用。请访问我的页面。

enter image description here

如果我在h3文本框中更改某些内容,它将在about.php中更改<h3>New text</h3>如何执行此操作如果有人知道解决方案请帮助我解决此问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我会告诉你第一个$ html-&gt; find(&#39; meta [name = keywords]&#39;),你必须使用simplehtmldom的函数__set,我正在取textarea的名字作为形式

foreach($html->find('meta[name=keywords]') as $element) {

$element->__set("content", "$_POST['formss']");

}

请为textarea使用不同的类或ID,在页面中可以有一个meta关键字或标题,但它可以包含许多h3或h4或h5。因此,请使用for循环,这样可以让您更轻松。还有一件事,你为什么用过     $ dom = file_get_contents($ id);     $ html = file_get_html($ id); 两个加载函数,他们将加载相同的东西,使你的PHP执行缓慢。