Reputation: 375
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
Upvotes: 5
Views: 21235
Reputation: 21563
$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
Upvotes: 4
Reputation: 401142
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.
$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)
Upvotes: 15
Reputation: 4854
What do you mean regex isn't popular? I for one love regular expressions.
Anyway, what you want is something like:
$contents = file_get_contents('/path/to/file.html');
preg_match('/value="(\w+)"/',$contents,$result);
Upvotes: 0
Reputation: 76756
Post the form to a php page. The value you want will be in $_POST['id'].
Upvotes: 0