Php 在字符串之前删除(排除)输入标记的正则表达式

Php 在字符串之前删除(排除)输入标记的正则表达式,php,regex,Php,Regex,我试图删除出现在特定字符串之前的输入标记。我有一个巨大的字符串,它由表单/table/tr/td/inputs组成,超过100个。下面是示例html: <input type="hidden" name="special" value="123"> ... <tr> <td> <input type="checkbox" name="extendedeventinfo76022" value="y"> Enable Search

我试图删除出现在特定字符串之前的
输入
标记。我有一个巨大的字符串,它由表单/table/tr/td/inputs组成,超过100个。下面是示例html:

<input type="hidden" name="special" value="123">
...
<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76022" value="y"> Enable Search
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76006" value="y"> Enable Display 
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76137" checked value="y"> Enable Notes
  </td>
</tr>
...

如您所见,第一个名为“special”的隐藏输入以及“Enable Display”旁边的输入都消失了

设计一个正则表达式来一次性实现您想要的,这不是一件小事,而且执行起来很慢

您可能需要考虑另一种方法—通过行/标记循环(可能使用XML/HTML PHP解析器之一),并根据您的条件构造所需的输出。

#/usr/bin/php
#!/usr/bin/php
<?php 
$string = <<<'EOT'
<input type="hidden" name="special" value="123">
...
<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76022" value="y"> Enable Search
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76006" value="y"> Enable Display 
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76137" checked value="y"> Enable Notes
  </td>
</tr>
...

EOT;
echo preg_replace('/<input .* name="special" .*>|
                    <input .*>(?=\ Enable\ Display)/x', '', $string);

我正在使用Symfony2从网页上抓取数据。然后我将表单部分转换为一个字符串,我需要使用regex来排除该字符串的某些部分,如适当的输入。
#!/usr/bin/php
<?php 
$string = <<<'EOT'
<input type="hidden" name="special" value="123">
...
<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76022" value="y"> Enable Search
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76006" value="y"> Enable Display 
  </td>
</tr>

<tr>
  <td> 
    <input type="checkbox" name="extendedeventinfo76137" checked value="y"> Enable Notes
  </td>
</tr>
...

EOT;
echo preg_replace('/<input .* name="special" .*>|
                    <input .*>(?=\ Enable\ Display)/x', '', $string);