简单匹配
$result = [];
$match = preg_match_all('#<a></a>#', '<a></a><a></a>', $result);
var_dump($match);
var_dump($result);
输出
int(2)
array(1) {
[0]=>
array(2) {
[0]=>
string(7) "<a></a>"
[1]=>
string(7) "<a></a>"
}
}
匹配中间有字的
$result = [];
$match = preg_match_all('#<a>\S*</a>#', '<a>Context</a><a>Context</a>', $result);
var_dump($match);
var_dump($result);
结果
int(1)
array(1) {
[0]=>
array(1) {
[0]=>
array(2) {
[0]=>
string(28) "<a>Context</a><a>Context</a>"
[1]=>
int(0)
}
}
}
缩小匹配范围
$result = [];
$match = preg_match_all('#<a>\S*?</a>#', '<a>Context</a><a>Context</a>', $result);
var_dump($match);
var_dump($result);
结果,OK
int(2)
array(1) {
[0]=>
array(2) {
[0]=>
string(14) "<a>Context</a>"
[1]=>
string(14) "<a>Context</a>"
}
}
匹配有class等属性的
$result = [];
$match = preg_match_all('#<a[\S|\s]*?>\S*?</a>#', '<a class="AB">Context</a><a>Context</a>', $result);
var_dump($match);
var_dump($result);
结果,OK
int(2)
array(1) {
[0]=>
array(2) {
[0]=>
string(25) "<a class="AB">Context</a>"
[1]=>
string(14) "<a>Context</a>"
}
}
匹配大小写
$result = [];
$match = preg_match_all('#<a[\S|\s]*?>\S*?</a>#', '<A class="AB">Context</A><a>Context</a>', $result);
var_dump($match);
var_dump($result);
输出
int(1)
array(1) {
[0]=>
array(1) {
[0]=>
string(14) "<a>Context</a>"
}
}
忽略大小写
$result = [];
$match = preg_match_all('#<a[\S|\s]*?>\S*?</a>#i', '<A class="AB">Context</A><a>Context</a>', $result);
var_dump($match);
var_dump($result);
完成
int(2)
array(1) {
[0]=>
array(2) {
[0]=>
string(25) "<A class="AB">Context</A>"
[1]=>
string(14) "<a>Context</a>"
}
}
最终,匹配a标签的正则表达式是
preg_match_all('#<a[\S|\s]*?>\S*?</a>#i', $str, $result);