Как найти номер телефона в строке?

Есть строка типа

example text <a href="tel:1234567">123567</a> other tags

Как получить номер телефона? То есть то что после tel: и до ".

Буду благодарен за помощь!


Ответы (2 шт):

Автор решения: Сергей Мишин

Можно использовать объект DOMDocument (https://www.php.net/manual/ru/domdocument.loadhtmlfile.php) и работу с ним. Например получение элемента по тегу, у которого взять атрибут, у которого взять номер за счёт вспомогательных функций:

<?php
$myhtml = <<<EOF
<html>
    <head>
        <title>My Page</title>
    </head>
    <body>
        <p><a href="tel:1234567">Hello World!</a></p>
        <p><a href="tel:95798846">Another Hello World!</a></p>
    </body>
</html>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($myhtml);

$tags = $doc->getElementsByTagName('a');

foreach ($tags as $tag) {
    echo explode(':', $tag->getAttribute('href'))[1] . "\n";
}

output:

1234567
95798846
→ Ссылка
Автор решения: Haku Kimura

С помощью регулярного выражения:

$string = 'example text <a href="tel:1234567">123567</a> other tags';
preg_match_all('/<a href="tel:(\d+)">/', $string, $matches);

print_r($matches[1]);
// Выведет следующее:
// Array(
//     [0] => 1234567
// )
→ Ссылка