【发布时间】: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