PHP - Чтение текстового текста с определенной позиции


У меня возникли проблемы с синтаксическим анализом текста PHP У меня есть текстовый файл, в котором содержится такая информация:

Некоторый текст::некоторый текст.0 = ЦЕЛОЕ ЧИСЛО: 254

Что мне нужно, так это получить последнее значение 254 в качестве переменной в PHP. в этом текстовом файле это последнее значение может изменяться от 0 до 255

"sometext::sometext.0 = ЦЕЛОЕ ЧИСЛО: "эта часть вообще не меняется. Он имеет длину 36 символов, поэтому мне нужно получить с помощью PHP то, что после 36 символов, в переменную.

Спасибо ты.

Author: Neal, 2012-06-19

4 answers

Попробуйте использовать sscanf:

$string = "sometext::sometext.0 = INTEGER: 254";    
sscanf($string, "sometext::sometext.0 = INTEGER: %d", $number);
echo $number;

Демонстрация: http://codepad.org/Ash2QHvI

 3
Author: Neal, 2012-06-19 15:03:29

Возможно, substr() подойдет?

$text = "sometext::sometext.0 = INTEGER: 254";    
print substr($text, 37);

Смотрите это в действии здесь (скорректировано в соответствии с вашими образцами данных): http://codepad.org/5Ikt3kRh

 1
Author: ghoti, 2012-06-19 15:12:41

Попробуйте fgets для чтения файла.

Для синтаксического анализа я использую разделение . Я написал пример здесь. Но sscanf, похоже, является лучшим вариантом.

 1
Author: schmijos, 2012-06-19 15:13:25

Поскольку вы знаете, что строка всегда будет иметь такую форму, вы можете использовать функцию substr() для извлечения нужной части строки. Затем используйте intval(), чтобы при необходимости сделать его целым числом.

Примечание: Мой подсчет показывает, что число, которое вы пытаетесь получить, начинается с 33-й позиции (которая становится 32 ниже, так как значение substr равно 0), а не с 36-й.

Вы можете получить то, что хотите, с помощью:

$the_str = 'sometext::sometext.0 = INTEGER: 254';
$num = intval(substr($the_str, 32));
 0
Author: GreenMatt, 2012-08-03 20:07:20