我对function delete_all_between($char1, $char2, $string)
很感兴趣,它会在给定的$string中搜索$char1和$char2,如果找到了,则从这两个字符之间的子字符串中清除$string,包括 $char1和$char2本身。
示例:
$string = 'Some valid and <script>some invalid</script> text!';
delete_all_between('<script>', '</script>', $string);
现在,$string应该只包含
'Some valid and text'; //note two spaces between 'and text'
有没有人有快速解决方案?
发布于 2012-10-23 21:28:52
<?php
$string = 'Some valid and <script>some invalid</script> text!';
$out = delete_all_between('<script>', '</script>', $string);
print($out);
function delete_all_between($beginning, $end, $string) {
$beginningPos = strpos($string, $beginning);
$endPos = strpos($string, $end);
if ($beginningPos === false || $endPos === false) {
return $string;
}
$textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
return delete_all_between($beginning, $end, str_replace($textToDelete, '', $string)); // recursion to ensure all occurrences are replaced
}
发布于 2015-12-10 17:50:41
这里有一个线条:
preg_replace('/START[\s\S]+?END/', '', $string);
替换START
和END
:) Credits转到另一个SO线程!
发布于 2013-06-17 23:44:04
我认为substr()
运行得太慢了。最好的方法是:
return substr($string, 0, $beginningPos) .
substr($string, $endPos + strlen($end));
https://stackoverflow.com/questions/13031250
复制相似问题