我试图制作一个PHP函数,将两个字符串之间的所有匹配项替换为另一个给定的字符串。
我几乎可以确定我已经完成了所要寻找的内容,但是在进行编程时,我有两个版本。我希望你们向我解释哪个更好。
版本1:
<FrameLayout>
<SwipeRefreshLayout>
<NestedWebView/>
</SwipeRefreshLayout>
<CustomView/>
</FrameLayout>
版本2:
$html = "{tag param1|param2}<adfasdfsdf>adsfasdf<adsfasdfsd>{tag param1} {tag param2} sdfsdfadsfasdf";
$needle = array('{tag ', '}');
$placeholder = 'TEST';
$lengths = array(strlen($needle[0]), strlen($needle[1]), strlen($placeholder));
$offset = 0;
while(($startpos = strpos($html, $needle[0], $offset)) !== false){
$endpos = strpos($html, $needle[1], $startpos + $lengths[0]);
if($endpos === false) break;
$html = substr_replace($html, $placeholder, $startpos, $endpos - $startpos + 1);
$offset = $startpos + $lengths[2];
}
echo $html;
此代码搜索所有$html = "{tag param1|param2}<adfasdfsdf>adsfasdf<adsfasdfsd>{tag param1} {tag param2} sdfsdfadsfasdf";
$needle = array('{tag ', '}');
$placeholder = 'TEST';
$offset = 0;
while(($startpos = strpos($html, $needle[0], $offset)) !== false){
$endpos = strpos($html, $needle[1], $startpos + strlen($needle[0]));
if($endpos === false) break;
$html = substr_replace($html, $placeholder, $startpos, $endpos - $startpos + 1);
$offset = $startpos + strlen($placeholder);
}
echo $html;
次出现并将其替换为{tag ...........}
。
我知道这可能是微优化,但是我想学习。
欢迎您看到任何错误或建议。