EDIT: Я делаю это, потому что данные, которые я предоставил, содержат сотни записей, разделенных новой строкой, в этом формате, и мне нужно включить микроформаты в адресные данные. Таким образом, если строка, представленная ниже, мне нужно вывести:
<p><span itemprop="telephone">+1 800 123 456</span> (toll free) from overseas</p>
-
Мне нужно регулярное выражение для извлечения номера телефона из следующего формата:
+1 800 123 456 (бесплатный) из-за рубежа
Данные, которые я предоставил, были последовательно введены в этом формате, так эффективно, регулярное выражение, чтобы получить все и от "+" до первого нецифрового символа.
Если вы хотите использовать регулярное выражение, вы можете использовать что-то вроде этого:
\+[\d\s]+
$re = '/(\+[\d\s]+)/';
$str = "+1 800 123 456 (toll free) from overseas\n";
preg_match_all($re, $str, $matches);
С другой стороны, вы можете использовать то, что предложил castis, использовать preg_replace для замены символов, которые вы не хотите пустым, и сохранить остальные, например:
preg_replace('/[\D\+]/', '', $phone_number);
preg_replace('/[^0-9\+]/', '', $phone_number);
?