1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是一種使用匹配偏移量來計(jì)算相關(guān)子字符串的方法:
<?php
$text = "99999 Lorem ipsum 11111 dolor sit 22222 amet, consectetur 33333 adipiscing elit, sed do eiusmod tempor 1111 incididunt ut 11111 labore et dolore magna aliqua. 99999";
$nmbrs_tmp = array();
preg_match_all("@\b\d{5}\b@s", $text, $nmbrs_tmp, PREG_OFFSET_CAPTURE);
foreach ($nmbrs_tmp[0] as $key => $field) {
$offset = $field[1];
$start = ( $offset>=20 ? $offset-20 : 0 );
$length = $offset>=20 ? 45 : 45-(20-$offset);
$nmbrs_tmp[0][$key][2] = substr( $text, $start, $length );
}
print_r($nmbrs_tmp);
首先,我們將正則表達(dá)式簡(jiǎn)化為只找到 5 位數(shù)字(您原來的正則表達(dá)式會(huì)丟失行首和行尾的數(shù)字)。
然后我們匹配,傳遞 PREG_OFFSET_CAPTURE 標(biāo)志。
$length最后,我們使用返回的偏移量來計(jì)算所需子字符串的長(zhǎng)度(如果落在輸入的末尾可能無關(guān)緊要,但如果您愿意,可以調(diào)整它)。
結(jié)果是:
Array
(
[0] => Array
(
[0] => Array
(
[0] => 99999
[1] => 0
[2] => 99999 Lorem ipsum 11111 d
)
[1] => Array
(
[0] => 11111
[1] => 18
[2] => 99999 Lorem ipsum 11111 dolor sit 22222 ame
)
[2] => Array
(
[0] => 22222
[1] => 34
[2] => sum 11111 dolor sit 22222 amet, consectetur 3
)
[3] => Array
(
[0] => 33333
[1] => 58
[2] => 2 amet, consectetur 33333 adipiscing elit, se
)
[4] => Array
(
[0] => 11111
[1] => 122
[2] => 1111 incididunt ut 11111 labore et dolore ma
)
[5] => Array
(
[0] => 99999
[1] => 159
[2] => olore magna aliqua. 99999
)
)
)
- 1 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報(bào)