我有一个PHP脚本,使用preg_split函数将字符串拆分成数组。preg_split代码如下:
preg_split("~(?<!\*):~", $val);
这个函数实际上是在冒号处分割字符串,但是不包括前面的星号。
例如:"h*:el:lo"
被分割成 array("h*:el", "lo")
当需要分割大量字符串时,这个过程会消耗大量资源并变得很慢。 是否有更快的方法来实现这个功能?
你可以尝试类似这样的代码:
$string = "h*:el:lo";
$string = str_replace("*:", "#", $string);
$array = explode(":", $string);
我不确定速度会如何,但一旦你从字符串中移除 *: 位,就很容易进行分割。如果需要,操作后可以重新加上 *:。
array_map()
,获取*:
也非常缓慢。 - Álvaro Gonzálezpreg_split()
吗?因为使用 preg_match_all()
更容易:preg_match_all('/(?:^|:)([^*:]+(?:\*.[^*:]+)*)/', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[1];
*
这个条件。否则,您可以尝试使用explode
函数并比较结果。 - Hanky Panky*:
。 - Marc B