【问题标题】:php explode where no spaces etc [closed]php在没有空格等的地方爆炸[关闭]
【发布时间】:2012-06-08 10:18:44
【问题描述】:

我正在尝试分解一个尚未明确定义部分的字符串(即使用空格或逗号)

示例字符串:FRPARRGBASD

FR PAR GB ASD 都需要分解以作为单独的实体插入到数据库中。

请问我该怎么办

【问题讨论】:

  • 这个标记化的逻辑是什么?为什么不是 FRP A RGBAS D?
  • 你不能在不知道模式的情况下分割任何东西。是 2/3/2/3 个字符吗?是否根据内容进行拆分?
  • 是否要将文本拆分为 2 个字符 - 3 个字符 - 2 个字符 - 3 个字符等...?
  • 我猜第一个token的长度是floor(sqrt(string_length))-1但是我没有找到下一个token的逻辑。
  • 你应该在你的问题中解释分裂背后的逻辑

标签: php explode


【解决方案1】:

我假设这些是“法国”、“巴黎”、“英国”等地名……

这是一种可能的解决方案:

$places = array("FR", "PAR", "GB", "ASD");
$string = "FRPARGBASD";

$tokens = array();
while (strlen($string) > 0) {
   $next_token = "";
   $i = 0;
   while ($next_token == "") {
      if (substr($string, 0, strlen($places[$i])) == $places[$i]) {
         $next_token = $places[$i];
      }
   }
   $tokens[] = $next_token;
   $string = substr($string, strlen($next_token));
}

var_dump($tokens);

希望有帮助

【讨论】:

  • 我不确定猜测 OP 想要什么是一个好习惯,尤其是在他没有努力解释的情况下。它会产生可能不正确(因此无用且杂乱无章)的答案,并宣扬人们无需向我们提供详细信息即可获得他们想要的东西的想法。
  • 虽然做出这个假设并不能强制提出明确的问题,但我仍然觉得它可能会有所帮助。要么,他要标记的字符串由预定义的子字符串组成,在这种情况下,我的代码可以帮助找到最佳解决方案,要么字符串由随机子字符串组成,在这种情况下,我建议的代码不会解决问题,但也许允许 Meohmy 以不同于使用 explode() 的方式考虑可能的解决方案。
  • 也许可以,但在他的澄清之前先起草一个答案会更加谨慎,然后根据他的回答选择是否提交(或修改版本)。
  • 哈哈不错! +1 @ralfe 识别“模式”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2014-12-11
  • 2011-07-20
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多