Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21

Распарсить строку текста

29.03.2015, 02:27. Показов 3388. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет.

дана строка например
HTML5
1
number="128", X="2.01", Y="1.205"
как из строки вывести в php число 128 и координаты?
буду очень благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2015, 02:27
Ответы с готовыми решениями:

Распарсить строку
Здравствуйте. у Меня есть $_SERVER . $_SERVER; Я их заношу в 1 переменную и теперь Мне надо найти первый слэш и заменить то что после...

Распарсить строку
Здравствуйте. Помогит пожалуйста с регуляркой. Есть логи которые нужно представить в виде масива, а у меня беда с регулярками(( саму...

Распарсить строку
Добрые день, подскажите пожалуйста, как строку ниже преобразовать в вид: $ms = '1 2 3 24-32 36 35 1 40-44'; // то что есть ...

21
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 03:14
разобрать строку можно так
PHP
1
2
3
4
$str = 'number="128", X="2.01", Y="1.205"';
preg_match_all('/"(.*?)"/', $str, $match);
list($number, $x, $y) =  $match[1];
var_dump($number, $x, $y);
1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 11:37  [ТС]
PHP
1
2
3
4
$str = 'number="128", X="2.01", Y="1.205"';
preg_match_all('/"(.*?)"/', $str, $match);
list($number, $x, $y) =  $match[1];
var_dump($number, $x, $y);
выводит определённые символы в строке

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

Добавлено через 7 минут
т. е. если ввели
HTML5
1
2
3
number="128", X="2.01", Y="1.205";
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
надо вывести всё, но ведь кол-во аргументов нам не предугадать, как действовать?
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 11:37  [ТС]
а если несколько одинаковых строк с разными значениями, количество которых не предугадать?

Добавлено через 39 минут
т. е. если ввели
HTML5
1
2
3
number="128", X="2.01", Y="1.205";
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
надо вывести всё, но ведь кол-во аргументов нам не предугадать, как действовать?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
29.03.2015, 12:39
Цитата Сообщение от Alex128 Посмотреть сообщение
надо вывести всё, но ведь кол-во аргументов нам не предугадать, как действовать?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$s = <<<E
number="128", X="2.01", Y="1.205";
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
E;
echo "Исходная строка:<br>\n<pre>$s</pre>";
if (preg_match_all('/number="([0-9]+)", X="([0-9\.]+)", Y="([0-9\.]+)";/', $s, $m) === 0)
    echo "Совпадений не найдено!<br>\n";
else
{
    echo "Найдено совпадений: ".count($m[0])."<br><br>\n";
    for ($i=0; $i < count($m[0]); $i++)
        echo ($i+1).". Число = ".$m[1][$i].", координата X = ".$m[2][$i].", координата Y = ".$m[3][$i]."<br>\n";
}
Результат:
Code
1
2
3
4
5
6
7
8
9
10
11
Исходная строка:
 
number="128", X="2.01", Y="1.205";
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
 
Найдено совпадений: 3
 
1. Число = 128, координата X = 2.01, координата Y = 1.205
2. Число = 256, координата X = 5.01, координата Y = 7.205
3. Число = 1024, координата X = 3.01, координата Y = 5.205
1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 13:03  [ТС]
сделал так и результата нет
HTML5
1
< number="128", X="2.01", Y="1.205"; >
0
29.03.2015, 13:29

Не по теме:

Цитата Сообщение от pav1uxa Посмотреть сообщение
([0-9\.]+)
какая красивая регулярочка на флоат число :D

0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
29.03.2015, 13:32
Цитата Сообщение от Alex128 Посмотреть сообщение
сделал так и результата нет
все есть
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$s = <<<E
< number="128", X="2.01", Y="1.205"; >
 
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
E;
echo "Исходная строка:<br>\n<pre>$s</pre>";
if (preg_match_all('/number="([0-9]+)", X="([0-9\.]+)", Y="([0-9\.]+)";/', $s, $m) === 0)
    echo "Совпадений не найдено!<br>\n";
else
{
    echo "Найдено совпадений: ".count($m[0])."<br><br>\n";
    for ($i=0; $i < count($m[0]); $i++)
        echo ($i+1).". Число = ".$m[1][$i].", координата X = ".$m[2][$i].", координата Y = ".$m[3][$i]."<br>\n";
}
Результат:
Code
1
2
3
4
5
6
7
8
9
10
11
12
Исходная строка:
 
< number="128", X="2.01", Y="1.205"; >
 
number="256", X="5.01", Y="7.205";
number="1024", X="3.01", Y="5.205";
 
Найдено совпадений: 3
 
1. Число = 128, координата X = 2.01, координата Y = 1.205
2. Число = 256, координата X = 5.01, координата Y = 7.205
3. Число = 1024, координата X = 3.01, координата Y = 5.205
Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Poznakomlus Посмотреть сообщение
какая красивая регулярочка на флоат число
Но с (.*?) не сравнится :-[

1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 13:47  [ТС]
а если значение координаты отрицательное?

Добавлено через 1 минуту
PHP
1
[(-9)-9\.]
верно, так?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
29.03.2015, 13:58
Цитата Сообщение от Alex128 Посмотреть сообщение
а если значение координаты отрицательное?
Ну щас начнется: а если число отрицательно, а если игрек с маленькой буквы, а если пробел после равно, а если запятая вместо точки, а если числа в пятидесятиричной системе счисления.... Сделайте тогда уж так:
PHP
1
preg_match_all('/number\s*=\s*"([^\"]+)"\s*,\s*x\s*=\s*"([^\"]+)"\s*,\s*y\s*=\s*"([^\"]+)"/i', $s, $m)
А вообще почитайте про регулярные выражения - http://php.net/manual/ru/refer... syntax.php
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 14:07
pav1uxa,
Цитата Сообщение от pav1uxa Посмотреть сообщение
preg_match_all('/number\s*=\s*"([^\"]+)"\s*,\s*x\s*=\s*"([^\"]+)"\s*,\s*y\s*=\s*"([^\"]+)"/i', $s, $m)

Цитата Сообщение от pav1uxa Посмотреть сообщение
Но с (.*?) не сравнится
PHP
1
$num = (float) $num;
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
29.03.2015, 14:16
Цитата Сообщение от Poznakomlus Посмотреть сообщение
$num = (float) $num;

Не по теме:

Стесняюсь спросить - и?

0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 14:33
Цитата Сообщение от pav1uxa Посмотреть сообщение
Стесняюсь спросить - и?
выбрал, что внутри запятых (будет в виде строки)
далее привел к типу которому надо((float, int ...) или обработал своей функцией к примеру число с запятой а не точкой 4,54 скажут то-же число
это и быстрее и по коду короче и нагляднее и без мега регулярок
PHP
1
2
3
function strToFloat($str =''){
    return(floatval(str_replace(',', '.', $str)));
}
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 15:41  [ТС]
спасибо большое

а если никаких значений для определения нет, а просто через запятую, тогда как вывести только первые два, допустим?
PHP
1
'/([^\"]+)/'
выводится вся строка
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 15:49
Цитата Сообщение от Alex128 Посмотреть сообщение
а если никаких значений для определения нет, а просто через запятую, тогда как вывести только первые два, допустим
приведи пример строки
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 15:51  [ТС]
HTML5
1
1,2,3.0,4
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 15:55
PHP
1
2
3
$str = '1,2,3.0,4';
list($a, $b, $c, $d) = explode(',', $str);
var_dump($a, $b, $c, $d);
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 15:57  [ТС]
а регулярным выражением?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
29.03.2015, 16:14
Цитата Сообщение от Alex128 Посмотреть сообщение
а регулярным выражением?
здесь незачем их применять
PHP
1
2
3
$str = '1,2,3.0,4';
list($a, $b, $c, $d) = explode(',', $str);
var_dump($a, $b, $c, $d);
вы должны понимать, что применять регулярные выражения стоит в том случае, когда решить с помощью нативных php функций решение будет невозможно или трудоемко применять надо только в крайней необходимости
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
29.03.2015, 18:16  [ТС]
мне нужно парсить несколько вариантов, которые определит пользователь
неохота под каждый вариант писать отдельно обработку

Добавлено через 1 час 16 минут
HTML5
1
'/obj\s*.\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*/'
только значение не может быть отрицательным

Добавлено через 40 минут
никак не выходит..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2015, 18:16
Помогаю со студенческими работами здесь

Как распарсить строку:
Здравствуйте! Пользователь вводим в input type=&quot;text&quot; функцию (например: 1-sin^2(2*x+5)) Возможно ли распарсить такую строку что бы...

Распарсить строку с меняющимся символом
Всем привет, столкнулся с одной задачкой, не могу разобраться... По сути, есть json-строка, мне с нее нужно получить одно число, которое...

Распарсить невалидную json строку
Мне необходимо из невалидной json строки получить массив исходный массив такой {all:129, data:} Но для json_decode необходимо...

помогите распарсить HTML строку
Здравствуйте. Подскажите какое подобрать регулярное выражение чтобы распарсить вот такие строчки &lt;tr class=&quot;G1&quot;...

Распарсить строку на элементы и занести в массив
В общем возвращаясь к непонятному для меня PHP. Как вы в этом языке парсите строки по-человечески??? Например есть у меня ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru