【问题标题】:delete all bug string between two words删除两个单词之间的所有错误字符串
【发布时间】:2014-06-08 18:17:33
【问题描述】:

我有一个生成文本的脚本。我需要剥离所有重复的文本块。字符串是 xml 格式的,所以我可以使用开始和结束标记来确定字符串的位置。我一直在使用 substr_replace 删除不必要的文本...但是,只有当我知道所述文本将在字符串中出现多少次时,这才有效。示例:

<container>
  <string1>This is the first string.</string>
  <string2>This is the second string.</string>
  <stuff>This is the important stuff.</stuff>
</container>

该容器可能出现一次、两次、六次、七次,等等。关键是,它必须只在字符串变量中出现一次。现在这就是我正在做的事情。

$where_begin = strpos($wsman_output,'<container');
$where_end = strpos($wsman_output,"</container>");
$end_length = strlen("</Envelope>");
$attack = $where_end - $where_begin;
$attack = $attack + $end_length;
$wsman_output = substr_replace($wsman_output,"",$where_begin,$attack);

每次容器存在时我都会这样做......但是,我刚刚发现它并不总是一样......这真的把事情搞砸了。

有什么想法吗?

【问题讨论】:

  • 你能澄清一下这个问题吗?您的示例中没有重复的文本块。另外,“我刚刚发现它并不总是一样”是什么意思
  • 所以...该块只是单个块的外观示例。一个字符串中可能有 15 个完全相同的文本块,或者两个,或者只有一个。我的意思是这些块不会每次都以相同的数量出现。所以有时可能有 5 个,下一个可能有 8 个。这就是我的意思,它不会是一样的(所以我不能像以前那样用 substr_replace 把它全部去掉。)

标签: php xml string formatting filtering


【解决方案1】:

最后我决定使用here建议的方法。

我从变量中提取了我想要的每个字符串块,然后按照所需的顺序将它们组合在一起。

【讨论】: