Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / preg_match: получать значение по имеющейся части строки / 20 сообщений из 20, страница 1 из 1
06.10.2013, 22:45
    #38418309
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
Помогите, пожалуйста.

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

Код: 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
06.10.2013, 23:24
    #38418326
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
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
07.10.2013, 01:30
    #38418379
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
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
07.10.2013, 02:08
    #38418387
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
MikkiMouse,

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

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



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

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



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

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



:) спасибо!

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

не зацепляет все что "после where"?...
...
Рейтинг: 0 / 0
07.10.2013, 02:33
    #38418394
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
потому что там не where(.*)
...
Рейтинг: 0 / 0
07.10.2013, 02:35
    #38418395
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
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
07.10.2013, 02:40
    #38418396
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
preg_match_all('#where(.*)#s', $this->sql, $matches);
...
Рейтинг: 0 / 0
07.10.2013, 02:42
    #38418397
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
ScareCrowpreg_match_all('#where(.*)#s', $this->sql, $matches);

s добавилось потому что есть перенос и точке нужно трактовать любой отдельный символ как символ, даже переход на новую строку?...
...
Рейтинг: 0 / 0
07.10.2013, 02:46
    #38418398
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
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
07.10.2013, 02:50
    #38418399
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
http://www.php.net/manual/en/regexp.reference.meta.php
автор .
match any character except newline (by default)
...
Рейтинг: 0 / 0
07.10.2013, 02:51
    #38418401
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
preg_match: получать значение по имеющейся части строки
ScareCrow http://www.php.net/manual/en/regexp.reference.meta.php
автор .
match any character except newline (by default)

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

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

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

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

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


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