【发布时间】:2017-06-18 13:12:39
【问题描述】:
这实际上是我遇到但没有找到解决方案的两个 SO 问题 split string into words by using space a delimiter 和 Split string by other strings 的组合。
假设分隔符数组是
$splitby = array('dlmtr1','dlmtr2','dlmtr3',' ','dlmtr5','dlmtr6');
$text = ' dlmtr1This is the string dlmtr2dlmtr2TTTdlmtr5WWWWW ';
$textArr = ('This', 'is', 'the', 'string', 'TTT', 'WWWWW');
$delimiterArr = (' dlmtr1', ' ', ' ', ' ', 'dlmtr2dlmtr2', 'dlmtr5',' ');
换个说法是真的
$text == $delimiterArr[0] . $textArr[0] . $delimiterArr[1] . $textArr[1] . ... . $delimiterArr(count($delimiterArr));
附:结果,$delimiterArr 的每一项都至少包含一个或多个分隔符,如您所见。
模式可能解决的步骤是:
$pattern = '/\s?'.implode($splitby, '\s?|\s?').'\s?/';
然后我继续以任何方式得到错误的结果。
更新:这是我得到的接近预期结果的结果,但问题是分隔符是分开的,但如果它们在文字**
$splitby = array('dlmtr1','dlmtr2','dlmtr3',' ','dlmtr5','dlmtr6');
$text = ' dlmtr1This is the string dlmtr2dlmtr2TTTdlmtr5WWWWW ';
$pattern = '/\s?'.implode($splitby, '\s?|\s?').'\s?/';
$result = preg_split($pattern, $text, -1, PREG_SPLIT_NO_EMPTY);
preg_match_all($pattern, $text, $matches);
print_r($result);
print_r($matches[0]);
结果:
Array
(
[0] => This
[1] => is
[2] => the
[3] => string
[4] => TTT
[5] => WWWWW
)
Array
(
[0] =>
[1] => dlmtr1 '[0] and [1] should come together
[2] =>
[3] =>
[4] =>
[5] =>
[6] => dlmtr2 '[6] and [7] should come together
[7] => dlmtr2
[8] => dlmtr5
[9] =>
)
谢谢。
【问题讨论】:
-
投反对票的人,你能解释一下你的投票吗?谢谢。
标签: php string split substring delimiter