У меня есть это регулярное выражение для работы с якорем:
$p = '%<a.*\s+name="(.*)"\s*>(?:.*)</a>%im';
Это соответствует <a
, за которым следует ноль или более, за которым следует пробел и name="
Он захватывает имена, даже если класс или идентификатор предшествуют имени в привязке.
Что я хотел бы добавить, так это возможность сопоставлять name='
с одинарной кавычкой ('), так как рано или поздно кто-то сделает это.
Очевидно, я мог бы просто добавить второе регулярное выражение, написанное для этого, но это выглядит не элегантно.
Кто-нибудь знает, как добавить одинарную кавычку и просто использовать одно регулярное выражение? Любые другие улучшения или рекомендации будут очень приветствоваться. Я могу использовать всю помощь по регулярным выражениям, которую я могу получить!
Большое спасибо за чтение,
function findAnchors($html) {
$names = array();
$p = '%<a.*\s+name="(.*)"\s*>(?:.*)</a>%im';
$t = preg_match_all($p, $html, $matches, PREG_SET_ORDER);
if ($matches) {
foreach ($matches as $m) {
$names[] = $m[1];
}
return $names;
}
}