Nie rozumiem dokładnie tego, czego chcesz, ponieważ zależy to od tego, ile grup zostanie przechwyconych, wykonałem funkcję przechwytywania przesunięcia ostatniego układu przechwytywania do numeru grupy, we wzorze mam 3 grupy: pierwsza grupa, pełne przechwytywanie i dwie pozostałe grupy, podgrupy.
Wzór przykładowy kod:
$pattern = "/<a[^\x3e]{0,}href=\x22([^\x22]*)\x22>([^\x3c]*)<\/a>/";
przykładowy kod HTML:
$subject = '<ul>
<li>Search Engines</li>
<li><a href="https://www.google.com/">Google</a></li>
<li><a href="http://www.bing.com/">Bing</a></li>
<li><a href="https://duckduckgo.com/">DuckDuckGo</a></li>
</ul>';
mojej funkcji, to rejestruje przesunięcie ostatniego elementu i masz możliwość wskazywania liczby dopasowywania:
function get_offset_last_match($pattern, $subject, $number) {
if (preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE) == false) {
return false;
}
return $matches[$number][count($matches[0]) - 1][1];
}
Możesz uzyskać szczegółowe informacje na temat preg_match_all here na oficjalnej dokumentacji.
Korzystanie mój wzór na przykład:
0 => cały tekst
1 => href wartość
2 => innerHTML
echo '<pre>';
echo get_offset_last_match($pattern, $subject, 0) . PHP_EOL; // all text
echo get_offset_last_match($pattern, $subject, 1) . PHP_EOL; // href value
echo get_offset_last_match($pattern, $subject, 2) . PHP_EOL; // innerHTML
echo '</pre>';
die();
wyjścia:
140
149
174
My funkcja (tekst):
function get_text_last_match($pattern, $subject, $number) {
if (preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE) == false) {
return false;
}
return $matches[$number][count($matches[0]) - 1][0];
}
Przykładowy kod:
echo '<textarea style="font-family: Consolas: font-size: 14px; height: 200px; tab-size: 4; width: 90%;">';
echo 'ALL = ' . get_text_last_match($pattern, $subject, 0) . PHP_EOL; // all text
echo 'HREF = ' . get_text_last_match($pattern, $subject, 1) . PHP_EOL; // href value
echo 'INNER = ' . get_text_last_match($pattern, $subject, 2) . PHP_EOL; // innerHTML
echo '</textarea>';
wyjściowa wynosi:
ALL = <a href="https://duckduckgo.com/">DuckDuckGo</a>
HREF = https://duckduckgo.com/
INNER = DuckDuckGo
Proszę jasno, *** mam to i muszę to wyjście ***, pomóż nam pomóc. –