powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / preg_match: получать значение по имеющейся части строки
20 сообщений из 20, страница 1 из 1
preg_match: получать значение по имеющейся части строки
    #38418309
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, пожалуйста.

У меня есть строка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
,`agent` as `Агент` 
,`shipper` as `Отправитель` 
,`consignee` as `Получатель` 
,`carrier` as `Перевозчик` 
,`payer` as `Плательщик` 
,`content` as `Груз (в одно слово)` 
,`weight` as `Вес, кг` 
,`colly` as `Кол-во мест, шт`



У меня дана входная строка: as `Агент`

как мне с помощью прегматч получить agent?
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418326
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei772,

бьюсь таким образом:

#`[a-zA-Z0-9_-]` as `Агент`#

$pattern='#`[a-zA-Z0-9_-]` as `'.$this->column_name[$i].'`#';
preg_match($pattern,$this->sql,$matches);

но рузельтат от print_r($matches) такой Array ( )

:(
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418379
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei772,

Код: php
1.
2.
3.
$pattern = "#`([a-zA-Z0-9_-]+)` as `" . $this->column_name[$i] . "`#";
preg_match($pattern, $this->sql, $matches);
print_r($matches);
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418387
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouse,

спс, а что значит плюс?

и как вытащить все "раельные" названия колонок (красным квадратом отмечено), а не представляемые в русском языке?
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418388
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
preg_match_all('#`(.*)`#', $this->sql, $matches);
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418390
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
Код: php
1.
preg_match_all('#`(.*)`#', $this->sql, $matches);



к сожалению в данном запросе такой результат (как на картинке),

а мне нужно вытащить только названия колонок, например, agent, shipper, consignee и т.д.
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418391
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
Код: php
1.
preg_match_all('#`(.*)`#', $this->sql, $matches);



добавил as: preg_match_all('#`(.*)` as#', $this->sql, $matches);

и получилось отлично! Спасибо за помощь!
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418392
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а оно ` as ` подхватило
Код: php
1.
preg_match_all('#,`(.*)` as#', $this->sql, $matches);
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418393
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowа оно ` as ` подхватило
Код: php
1.
preg_match_all('#,`(.*)` as#', $this->sql, $matches);



:) спасибо!

подскажите, пожалуйста, почему выражение
Код: php
1.
preg_match_all('#where(.*)#', $this->sql, $matches);

не зацепляет все что "после where"?...
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418394
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что там не where(.*)
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418395
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowпотому что там не where(.*)

логично :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$sql_details="
	select 
		 `uid` 
		,`agent` as `Агент` 
		,`shipper` as `Отправитель` 
		,`consignee` as `Получатель` 
		,`carrier` as `Перевозчик` 
		,`payer` as `Плательщик` 
		,`content` as `Груз (в одно слово)` 
		,`weight` as `Вес, кг` 
		,`colly` as `Кол-во мест, шт` 
		,`ewp` as `Кол-во паллетов, шт` 
	from `list` 
	where 
		`uid` like \"%$uid%\" 
";



я не силен в этом... почему он думает что у не where?...
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418396
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
preg_match_all('#where(.*)#s', $this->sql, $matches);
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418397
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowpreg_match_all('#where(.*)#s', $this->sql, $matches);

s добавилось потому что есть перенос и точке нужно трактовать любой отдельный символ как символ, даже переход на новую строку?...
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418398
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei772ScareCrowpreg_match_all('#where(.*)#s', $this->sql, $matches);

s добавилось потому что есть перенос и точке нужно трактовать любой отдельный символ как символ, даже переход на новую строку?...

незнаю о чем вы но:

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
автор m (PCRE_MULTILINE)
By default, PCRE treats the subject string as consisting of a single "line" of characters
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418399
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.php.net/manual/en/regexp.reference.meta.php
автор .
match any character except newline (by default)
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38418401
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow http://www.php.net/manual/en/regexp.reference.meta.php
автор .
match any character except newline (by default)

danke!
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38426891
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка "dddds GmbH, invoice 1216971, ups 1Z7105556899292863, MRN 13DE800185304956E1 , delivery note 345237"

как вытащить данные между запятыми? причем перед и после запятой может быть знак пробела, который нужно убрать :(
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38426934
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explode(',' , $str )
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38427320
Фотография Alexei772
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowexplode(',' , $str )

:) логично! так проще,
а как убираются последний и первый пробел? тоже есть такая функция?
...
Рейтинг: 0 / 0
preg_match: получать значение по имеющейся части строки
    #38430880
Alexei772,

Всё есть) Логичнее читать доки

trim
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / preg_match: получать значение по имеющейся части строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]