How to extract a value of an HTML input tag using PHP

19,946

Solution 1

If you want to extract some data from some HTML string, the best solution is often to work with the DOMDocument class, that can load HTML to a DOM Tree.

Then, you can use any DOM-related way of extracting data, like, for example, XPath queries.


Here, you could use something like this :

$html = <<<HTML
    <form action="blabla.php" method=post>

    <input type="text" name="campaign">  
    <input type="text" name="id" value="this-is-what-i-am-trying-to-extract">

    </form>
HTML;


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

$xpath = new DOMXPath($dom);

$tags = $xpath->query('//input[@name="id"]');
foreach ($tags as $tag) {
    var_dump(trim($tag->getAttribute('value')));
}

And you'd get :

string 'this-is-what-i-am-trying-to-extract' (length=35)

Solution 2

$html=new DOMDocument();
$html->loadHTML('<form action="blabla.php" method=post>
    <input type="text" name="campaign">  
    <input type="text" name="id" value="this-is-what-i-am-trying-to-extract">
    </form>');

$els=$html->getelementsbytagname('input');

foreach($els as $inp)
  {
  $name=$inp->getAttribute('name');
  if($name=='id'){
    $what_you_are_trying_to_extract=$inp->getAttribute('value');
    break;
    }
  }

echo $what_you_are_trying_to_extract;
//produces: this-is-what-i-am-trying-to-extract
Share:
19,946
Jim
Author by

Jim

Updated on June 22, 2022

Comments

  • Jim
    Jim almost 2 years

    I know regex isn't popular here, what is the best way to extract a value of an input tag within an HTML form using a php script?

    for example:

    some divs/tables etc..

    <form action="blabla.php" method=post>
    
    <input type="text" name="campaign">  
    <input type="text" name="id" value="this-is-what-i-am-trying-to-extract">
    
    </form>
    

    some divs/tables etc..

    Thanks