php - preg-replace不工作

时间:2014-07-30 08:09:58

标签: php preg-replace

$file = 'test.php';

的index.php

<div class="test">
  <p>It test</p>
  <form class="FormTest">
    <input type="text" name="rel">
  </form>
  <form class="FormTest2">
    <input type="text" name="rel">
  </form>
</div>

在下一步中我们获取内容index.php并删除form

ob_start(); // start output buffer
include $file;
$template = ob_get_contents(); // get contents of buffer
ob_end_clean();
$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/',
'', $template );

但它不起作用且form.FormTest没有删除......

请告诉我哪里有问题?

5 个答案:

答案 0 :(得分:2)

试试这个

ob_start(); // start output buffer
include $file;
$template = ob_get_contents(); // get contents of buffer
$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/',
'', $template );
ob_end_clean();

只有ob_end_clean();应该在最后

或者你也可以这样做

ob_get_clean()基本上同时执行ob_get_contents()ob_end_clean()

ob_start(); // start output buffer
include $file;
$template = ob_get_clean();
$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/','', $template );
echo $template ; 

答案 1 :(得分:0)

您可能需要在正则表达式中使用带有/ m的多线修改器:

$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/m', '', $template );

答案 2 :(得分:0)

尝试将preg_replace代码更改为以下内容:

$template = preg_replace('/<form.*?class="FormTest.*?form>/s','', $template );

将HTML作为字符串放入$ template时,它对我有用。

答案 3 :(得分:0)

你的点也需要匹配换行符,所以添加s-modifier

$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/s', '', $template );

答案 4 :(得分:-1)

以下代码应该可以使用

$template = 'this is just a test<form class="FormTest">form will be removed</form>...';
$template = preg_replace('/<form.*?class="FormTest".*?>.*?<\/form>/', '', $template);

echo $template;