Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа со строками

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как вытянуть число со строки
nordghost
Отправлено: 16 Января, 2012 - 10:53:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




допустим я пишу функцию


при выводе я вижу следующее

Memtotal 509000Кб
Memfree 56000Кб
..... и т.д.

как мне вытащить только числа которые идут после слов мем тотал и мем фри и записать их в отдельные переменные?


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
LIME
Отправлено: 16 Января, 2012 - 11:09:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
Okula
Отправлено: 16 Января, 2012 - 11:29:45
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




PHP:
скопировать код в буфер обмена
  1. $file = file_get_contents("../../../proc/meminfo");
  2. preg_match_all("~([0-9]+)~m", $file, $result);
  3. var_dump($result[1]);

(Отредактировано автором: 16 Января, 2012 - 11:30:01)

 
 Top
LIME
Отправлено: 16 Января, 2012 - 11:35:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




условиям не подходит
тогда уж
PHP:
скопировать код в буфер обмена
  1. $file = file_get_contents("../../../proc/meminfo");
  2. preg_match_all("~(?:Memtotal |Memfree )([0-9]+)~m", $file, $result);
  3. var_dump($result);

(Отредактировано автором: 16 Января, 2012 - 12:28:14)

 
 Top
nordghost
Отправлено: 16 Января, 2012 - 12:21:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Okula пишет:
PHP:
скопировать код в буфер обмена

1.
$file = file_get_contents("../../../proc/meminfo");
2.
preg_match_all("~([0-9]+)~m", $file, $result);
3.
var_dump($result[1]);

(Отредактировано автором: 16 Января, 2012 - 11:30:01)


По этому выводит всё подряд на экран всё содержимое файла,

Лайм по вашей корректировке выводит только

array(0) {

} ничего, а мне нужно всего навсего 2 первых числа записать в 2 переменне 1 - в первую 2- во вторую


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
LIME
Отправлено: 16 Января, 2012 - 12:27:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




во первых прошу прощения допустил выше очепятку
исправил
во-вторых все работает
ищите ошибки у себя
проверил
(Добавление)
возможно файлы в utf тогда
~(?:Memtotal |Memfree )([0-9]+)~mu
(Добавление)
после Memtotal и Memfree пробел не случайно
не удалять
 
 Top
nordghost
Отправлено: 16 Января, 2012 - 12:54:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




LIME пишет:
во первых прошу прощения допустил выше очепятку
исправил
во-вторых все работает
ищите ошибки у себя
проверил
(Добавление)
возможно файлы в utf тогда
~(?:Memtotal |Memfree )([0-9]+)~mu
(Добавление)
после Memtotal и Memfree пробел не случайно
не удалять


Переписал 1 в 1 как у вас но теперь выводит:

array(2) { [0]=> array(0) {}[1]=> array(0){}}


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
LIME
Отправлено: 16 Января, 2012 - 13:07:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




клади текстовый файл в аттач если сам не можешь отладить
(внизу кнопка "выберите файл")
 
 Top
Okula
Отправлено: 16 Января, 2012 - 13:09:48
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




nordghost пишет:
По этому выводит всё подряд на экран всё содержимое файла

Будет выводить не всё подряд, а все совпадения в файле по шаблону. В данном случаи затрагиваются только цифры.
Результат работы скрипта будет массив цифр, что удовлетворяет поставленную задачу.
Для просмотра полученного результата массив можно пролистать циклом:
PHP:
скопировать код в буфер обмена
  1. foreach($result[1] as $val) {
  2.    echo $val.'<br />';
  3. }
 
 Top
nordghost
Отправлено: 16 Января, 2012 - 13:26:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Okula пишет:
Для просмотра полученного результата массив можно пролистать циклом:
PHP:
скопировать код в буфер обмена

PHP:
скопировать код в буфер обмена
  1.  
  2.       foreach($result[1] as $val) {
  3.       echo $val.'<br />';
  4.  
  5.       }





Почему когда я хочу вывести 1-й элемент массива result на экран я вижу слово Array

(Отредактировано автором: 16 Января, 2012 - 13:42:51)



-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
Okula
Отправлено: 16 Января, 2012 - 14:04:02
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Значит у тебя в файле строки содержат цифры не только в одном месте, как ты указал в первом посте, а встречаются где-то ещё втечение данной строки.
Я же написал регулярку основываясь только на известных мне данных.
 
 Top
nordghost
Отправлено: 16 Января, 2012 - 14:09:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




nordghost пишет:
Okula пишет:
Для просмотра полученного результата массив можно пролистать циклом:
PHP:
скопировать код в буфер обмена

PHP:
скопировать код в буфер обмена
  1.  
  2.       foreach($result[1] as $val) {
  3.       echo $val.'<br />';
  4.  
  5.       }





Почему когда я хочу вывести 1-й элемент массива result на экран я вижу слово Array


Всё разобрался - всем спасибо!


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB