preg_match_all () получить число из строки

как работает preg_match_all ()?

Я хочу получить число из строки:

например: у меня есть результат:

(62)

И я хочу только номер. И хочу сделать это с несколькими строками.
Это попытка, которую я сделал:

foreach($html2->find('small[class=menu-item__label__count]') as $aholder) {

$holderdes=$aholder->outertext;

preg_match_all('/([0-9]+)/',  $holderdes,$num);

echo $num.'<br>';

Возвращение было «массив массив массив массив …»

0

Решение

Вы должны напечатать $num[0];

foreach($num[0] as $pattern)
// do something with $pattern

Также ваше регулярное выражение выглядит неправильно. Если вы хотите соответствовать (61) вам нужно сделать (включая скобки):

'/\(([0-9]+)\)/'
0

Другие решения

Если у вас есть строка типа "(62)"

Тогда вы можете использовать это:

<?php
$str = '(62)';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
?>

Выход:

Array
(
[0] => Array
(
[0] => 62
)

)

Также, если вы пытаетесь повторить массив ($num) ты не получишь errors Включите отчеты об ошибках для отладки!

error_reporting(E_ALL);
ini_set("display_errors", 1);
0

preg_match возвращает массив, как видно из документация.

если вы хотите увидеть все содержимое массива, используйте

var_dump( $sum );

Если вам просто нужно соответствие, вы должны обратиться к этой конкретной части.

Посмотрите на Regex краткий справочник

  • [abc] Один символ: a, b или c
  • [^ abc] Любой символ, кроме
    а, б или в
  • [a-z] Любой отдельный символ в диапазоне a-z
    — [a-zA-Z] Любой отдельный символ в диапазоне a-z или A-Z
  • ^ Начало строки
  • $ Конец строки
    — \ A Начало строки
  • \ z конец строки
  • .Любой отдельный персонаж
  • \ s Любой символ пробела
  • \ S Любой непробельный символ
  • \ d Любая цифра
  • \ D Любая не цифра
  • \ w Любой символ слова (буква, цифра, подчеркивание)
  • \ W Любой несловесный символ
    — \ b Любой символ границы слова
  • (…) Захватить все вложенное
  • (a | b) a или b
  • стоит? Ноль или один из
  • * ноль или более
  • + один или несколько из
  • {3} Ровно 3 из
  • {3,} 3 или более
  • {3,6} от 3 до 6 из
0

Эта функция отлично объяснил на php.net

Посмотрите на этот очень простой пример, который извлекает числа из массива строк:

<?php
$strings = array ("fHzZGh4JMyfpc5visCC3q1a1ICBLWXnmfxoRa70S9HXHjBSVI4",
"1LRWmzTQBErP6kIqXRLMgzWoVdOJKrLpUbL99sZ3XdtscAvydG",
"5OMbG1hFMrTkMeThw64E80QqfLvxbZjo3tlsVzeJiDCDAn4D6C",
"lrYFqKKtarRHfteYHUDx4KAEjssvs12Ix5u3YGQKATQBxtqAhn",
"W3a3n0jzXtM2l5i8tOVnxPbBeGAz0ChzDQ6qhReQkdHTQ4sLmz");
$nums = array ();
foreach ($strings as $string) {
preg_match_all('/\d+/', $string, $matches);
$nums[] = $matches;
}

print_r($nums);

Это вывод:

Array
(
[0] => Array
(
[0] => Array
(
[0] => 4
[1] => 5
[2] => 3
[3] => 1
[4] => 1
[5] => 70
[6] => 9
[7] => 4
)

)

[1] => Array
(
[0] => Array
(
[0] => 1
[1] => 6
[2] => 99
[3] => 3
)

)

[2] => Array
(
[0] => Array
(
[0] => 5
[1] => 1
[2] => 64
[3] => 80
[4] => 3
[5] => 4
[6] => 6
)

)

[3] => Array
(
[0] => Array
(
[0] => 4
[1] => 12
[2] => 5
[3] => 3
)

)

[4] => Array
(
[0] => Array
(
[0] => 3
[1] => 3
[2] => 0
[3] => 2
[4] => 5
[5] => 8
[6] => 0
[7] => 6
[8] => 4
)

)

)
0
По вопросам рекламы [email protected]