【发布时间】:2015-08-25 16:46:49
【问题描述】:
示例可能效果最好。
-
a|b|c需要变成array('a', 'b', 'c') -
a|\||\}需要变成array('a', '\|', '\}') -
ab\}aaa|ae\|aa需要变成array('ab\}aaa', 'ae\|aa')
将要转换的字符串可以包含任何类型的字符,但有 3 个“特殊”字符可以解释为简单字符,前提是使用 \ 对其进行转义。 | 分隔选项,但如果转义,则需要将其解释为选项或其一部分(与任何其他字符一样)。 { and } 在这一点上总是会被转义。
问题是我需要在不使用正则表达式的情况下执行此操作。
我已经为此苦苦挣扎了 10 个小时,我当然希望有人对此有一个简单的答案。
***编辑
我的计划是搜索|,如果找到,检查它是否被转义。如果是,则继续搜索下一个。当我找到|时,我会取出字符串的第一个选项,并以同样的方式继续,直到没有|。
while ($positionFound != 1) {
$intPrevPosition = $intPosition;
$intPosition = strpos($strTemp, '|', $intPosition);
if ($intPosition === false || (substr_count($strTemp, '|') == 1 && $strTemp{$intPosition + $intPrevPosition - 1} == '\\')) {
$arrOptions[] = $strTemp;
$positionFound = 1;
}
elseif ($strTemp{$intPosition + $intPrevPosition - 1} != '\\') {
$intPosition = $intPrevPosition + $intPosition;
$arrOptions[] = substr(substr($strTemp, 0, $intPosition + 1), 0, -1);
$strTemp = substr($strTemp, $intPosition + 1);
$intPosition = 0;
}
}
【问题讨论】:
-
为什么不能使用正则表达式?
preg_split是正确的工具。 -
如果这是一些没有实际用途的家庭作业问题,并且您已经尝试了 10 个小时的解决方案 - 那么至少分享其中一个,或者您对如何解决的想法接近它。
-
这是作业的一部分,它禁止使用正则表达式。我已经到了它的最后一部分,但现在我被卡住了。
标签: php arrays string escaping