首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP函数用于删除字符串中某些字符之间的所有字符

PHP函数用于删除字符串中某些字符之间的所有字符
EN

Stack Overflow用户
提问于 2012-10-23 21:14:01
回答 8查看 47.2K关注 0票数 31

我对function delete_all_between($char1, $char2, $string)很感兴趣,它会在给定的$string中搜索$char1和$char2,如果找到了,则从这两个字符之间的子字符串中清除$string,包括 $char1和$char2本身。

示例:

代码语言:javascript
复制
$string = 'Some valid and <script>some invalid</script> text!';
delete_all_between('<script>', '</script>', $string);

现在,$string应该只包含

代码语言:javascript
复制
'Some valid and  text'; //note two spaces between 'and  text'

有没有人有快速解决方案?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-10-23 21:28:52

代码语言:javascript
复制
<?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
}
票数 61
EN

Stack Overflow用户

发布于 2015-12-10 17:50:41

这里有一个线条:

preg_replace('/START[\s\S]+?END/', '', $string);

替换STARTEND :) Credits转到另一个SO线程!

票数 45
EN

Stack Overflow用户

发布于 2013-06-17 23:44:04

我认为substr()运行得太慢了。最好的方法是:

代码语言:javascript
复制
return substr($string, 0, $beginningPos) . 
       substr($string, $endPos + strlen($end));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13031250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档