Home > Article > Backend Development > PHP Regular Expression: How to match all dropdown menus in HTML
In web development, drop-down menus are a common type of control. In some cases, we need to match all dropdown menu elements in HTML with PHP regular expressions, such as in the case of crawlers or data scraping. This article will show you how to use PHP regular expressions to match all drop-down menus in HTML.
<select> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select>
preg_match_all(pattern, subject, matches);
Among them, pattern represents a regular expression, subject is the string to be searched, and matches is the matched result array.
/<select[^>]*>(.*?)</select>/s
This regular expression can match all select tags, including The option tag. Among them, represents the word boundary, 1 represents zero or more non-"> " characters, (.?) represents the non-greedy mode Everything, s means let "." match all characters including newlines.
The following is a complete sample code:
$html = ' '; preg_match_all('/<select[^>]*>(.*?)</select>/s', $html, $matches); print_r($matches);
Run the above code and output the following results:
Array ( [0] => Array ( [0] => <select> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> [1] => <select> <option value="4">选项4</option> <option value="5">选项5</option> <option value="6">选项6</option> </select> ) [1] => Array ( [0] => <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> ) [1] => <option value="4">选项4</option> <option value="5">选项5</option> <option value="6">选项6</option> ) ) )
The result array contains two elements, corresponding to two The HTML code for the drop-down menu. If there are more drop-down menus on the page, they will also be matched and saved in the results array.
foreach ($matches[1] as $select) { preg_match_all('/<option value="(.*?)">(.*?)</option>/s', $select, $options); print_r($options); }
The output result is as follows:
Array ( [0] => Array ( [0] => <option value="1">选项1</option> [1] => <option value="2">选项2</option> [2] => <option value="3">选项3</option> ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => 选项1 [1] => 选项2 [2] => 选项3 ) )
Note that the "(.*? )" matches the value and text of the option respectively. If you need to extract other attributes, such as the style or ID of the option, you can also add the corresponding pattern in the regular expression.
The above is the detailed content of PHP Regular Expression: How to match all dropdown menus in HTML. For more information, please follow other related articles on the PHP Chinese website!