У меня есть набор строк, как показано ниже:
fw-sophi.watcon.-.120
d-elain.heckop.-.121
sim.boosh.-.134
bh.-.elain.heckop.-.244
Как бы я обрезал следующий набор строк, чтобы вернуть только средний раздел?
ожидаемое возвращение:
sophi.watcon
elain.heckop
sim.boosh
elain.heckop
Это не практично trim()
строк, так как их много, как бы я это сделал программно?
Если других шаблонов нет, этого должно быть достаточно:
$input = 'fw-sophi.watcon.-.120
d-elain.heckop.-.121
sim.boosh.-.134
bh.-.elain.heckop.-.244';
if (preg_match_all('~(?<key>\w+\.\w+)~', $input, $matches)) {
print_r($matches['key']);
}
Результирующий массив:
Array
(
[0] => sophi.watcon
[1] => elain.heckop
[2] => sim.boosh
[3] => elain.heckop
)
Объяснение картины:
~ #pattern start
( #start group to capture matched result
?<key> #give a name to group. see $matches['key'].
\w+ #one or more alphanumeric characters
\. #dot character. we need to escape it with \
\w+ #one or more alphanumeric characters
) #end group
~ #pattern end
x
Других решений пока нет …