Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
extracting attributs from <element attr="value" attr2=val attr3='val'>
// extracting attributes
$expected = array(
'value' => 'joe',
'type' => 'hidden',
'name' => 'firstname',
$sources = array(
'<input value="joe" type="hidden" name="firstname">',
'<input value="joe" name="firstname" type="hidden">',
'<input name="firstname" type="hidden" value="joe">',
'<input name=firstname type="hidden" value=\'joe\'>',
$pattern = "/\s+(?<name>[a-z0-9-]+)=(((?<quotes>['\"])(?<value>.*?)\k<quotes>)|(?<value2>[^'\" ]+))/i";
foreach ($sources as $source) {
$result = array();
preg_match_all($pattern, $source, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$result[$match['name']] = $match['value'] ?: $match['value2'];
var_dump($source, $result == $expected);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment