как работает 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>';
Возвращение было «массив массив массив массив …»
Вы должны напечатать $num[0];
foreach($num[0] as $pattern)
// do something with $pattern
Также ваше регулярное выражение выглядит неправильно. Если вы хотите соответствовать (61)
вам нужно сделать (включая скобки):
'/\(([0-9]+)\)/'
Если у вас есть строка типа "(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);
preg_match возвращает массив, как видно из документация.
если вы хотите увидеть все содержимое массива, используйте
var_dump( $sum );
Если вам просто нужно соответствие, вы должны обратиться к этой конкретной части.
Посмотрите на Regex краткий справочник
Эта функция отлично объяснил на 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
)
)
)