【发布时间】:2014-11-19 10:21:29
【问题描述】:
我有一段文本存储为字符串。我想用该子字符串的子字符串替换多个子字符串。这是我要替换的典型子字符串(请注意,我要替换多个子字符串)。
$String = "loads of text [[gibberish text|Text i Want]] more text [[gibberish text|Text i Want]] more text [[if no separator then just remove tags]]";
$String = deleteStringBetweenStrings("[[", "|", $String , true);
deleteStringBetweenStrings 是一个递归函数,它将删除 2 个子字符串(包括子字符串)之间的所有代码,这将对第一个子字符串执行我想要的操作,但之后会变得有点疯狂。
function deleteStringBetweenStrings($beginning, $end, $string, $recursive)
{
$beginningPos = strpos($string, $beginning);
$endPos = strpos($string, $end);
if ($beginningPos === false || $endPos === false)
{
return $string;
}
$textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
$string = str_replace($textToDelete, '', $string);
if (strpos($string, $beginning) && strpos($string, $end) && $recursive == true)
{
$string = deleteStringBetweenStrings($beginning, $end, $string, $recursive);
}
return $string;
}
我有没有更有效的方法来做到这一点?
预期输出=“文本负载文本我想要更多文本文本我想要更多文本如果没有分隔符那么只需删除标签”
【问题讨论】:
-
你的预期输出是什么?
-
"大量文本文本我想要更多文本文本我想要更多文本如果没有分隔符那么只需删除标签"