Php 从字符串中删除第一行和最后一行

Php 从字符串中删除第一行和最后一行,php,string,file,lines,Php,String,File,Lines,我有一个名为$post的字符串(例如),它包含下面的数据。我想删除行,直到第一个“文本”(我不知道有多少标签,所以没有确切的行是可能的)。我还想删除最后一个“文本”下面的所有行 $test= <<<EOM <div id="content"> <div class="date">2013-02-11 16:19:57</div> <h2 clas

我有一个名为$post的字符串(例如),它包含下面的数据。我想删除行,直到第一个“文本”(我不知道有多少标签,所以没有确切的行是可能的)。我还想删除最后一个“文本”下面的所有行


$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;

$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;
正文

我只想在字符串中包含以下内容:

$input  = (your input string);
$search = 'TEXT';
$first  = strpos($input, $search);
$last   = strrpos($input, $search);

$final  = substr($input, $first, strlen($input) - $first - $last);

$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;

$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;
正文 注:

  • 我不知道用户会有多少标签,也不知道我有多少行 从一开始就移除,这意味着我不知道首先在哪里 “文本”开始
  • 我不知道帖子会有多大,也不知道从哪里发 我开始删除
  • 我只知道在那最后有5行 我需要把它们取下来。我只知道标签以和结尾 最后一行以开头
  • 我不知道我需要提取的文本的第一个字母/单词是什么(文本只是示例)
参考资料:


只需找到第一个事件和最后一个事件,并使用它们构建字符串:

参考,和。

给你


$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;

$test= <<<EOM
<div id="content">
                    <div class="date">2013-02-11      16:19:57</div>
                    <h2 class="storytitle"><a href="p.php?slug=SOMESLUG">PRPHAHAHAH</a></h2>

                    <!-- TAGS -->
                    <div class="tags"><a href="/tag/">slug1</a> <a href="/tag/">slug2</a> <a href="/tag/">slug3</a> </div>TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
TEXT<br />
<br />
<pre><code>1
2
3
4
5
</code></pre><br />
<br />
TEXT

                    <p id="comments" class="separator-story">
                        <!-- <div class="comments"></a href="/post/Somepost" -->
                    </p>
                    </div>
EOM;


$tok = strtok($test, "\n");

$found_start = false;
$found_middle = false;
$found_end = false;

$string_start = "";
$string_middle = "";
$string_end = "";

while ($tok !== false) {
    if ( strpos(str_replace(" ", "", $tok), "TEXT" ) === 0) {
      if(!$found_middle){
        //middle not found yet, so still looking for start
        $string_start = $string_start . $tok;
        $found_start = true;
      } else { 
        //middle found and this token starts with the key, so it is the end
        $string_end = $tok;
        $found_end = true;
      }
    } else if($found_start) {
        $string_middle = $string_middle . $tok;
        $found_middle = true;
    }
    if(!$found_end){
      $tok = strtok("\n");
    } else {
      $tok = false;
    }
}

echo $string_start . $string_middle . $string_end;
正文

EOM; $tok=strtok($test,“\n”); $found\u start=false; $found\u middle=false; $found\u end=false; $string_start=“”; $string_middle=“”; $string_end=“”; 而($tok!==false){ if(strpos(str_replace(“,”,$tok),“TEXT”)==0){ 如果(!$found\u middle){ //中间还没有找到,所以还在寻找开始 $string\u start=$string\u start.$tok; $found\u start=true; }否则{ //找到中间标记,该标记以键开始,因此它是结束标记 $string_end=$tok; $found\u end=true; } }else if($found\u start){ $string\u middle=$string\u middle.$tok; $found\u middle=true; } 如果(!$found\u end){ $tok=strtok(“\n”); }否则{ $tok=假; } } echo$string\u开始$绳子在中间$绳头;
啊,如果我不够清楚,很抱歉。我刚加了一颗子弹,看看。我不知道第一个字母/单词是什么。感谢您的参考和回答。如果您不知道我们要查找的
文本
单词,那么确定它的逻辑是什么?最后一个标记以“”结尾,哎哟,那代码太大了。正如你们在我问题的最后一个项目中看到的,我不知道文本是如何开始的。我不知道一开始是否会有“文本”段落。但这是给你的投票,谢谢你的贡献!