使用preg_replace删除部分HTML空格

时间:2016-05-06 18:36:07

标签: php preg-replace

我正在尝试使用preg_replace来查找和删除CMS中的部分页面。

这是我想删除的代码示例:

                                <dt>
                                    <label for="my_label">My label:</label>
                            </dt>
                            <dd>
                                    <select name="my_label" id="my_label">
                                            <option value="0" selected="selected">option 0</option>
                                            <option value="1">option 1</option>
                                            <option value="2">option 2</option>
                                            <option value="3">option 3</option>
                                    </select>
                            </dd>

选项可以是动态的,它们取决于配置文件中的用户设置。

在这里提出的其他问题的许多提示的帮助下,我能够做到这一点:

preg_replace('#(?<=<label for="my_label">)(.*?)(?=<\/select>)#ms', '', $html);

它工作得很好但是有一个我似乎无法解决的小问题 - 输出看起来像这样:

                                <dt>
                                    <label for="my_label"></select>
                            </dd>

是否可以通过对上面编写的preg_replace进行一些修改来删除它? 我故意发布带空格的代码,因为我认为注册exp很重要。

1 个答案:

答案 0 :(得分:0)

要摆脱整个块使用以下内容:

preg_replace('!(<dt>\s+<label for="my_label">.*?</dd>)!ms', '', $t);

\ s是任何空格 。*?在&lt;之前将匹配尽可能少的字符/ DD&GT;仅删除此块 (你可以在这里找到更多:http://php.net/manual/de/regexp.reference.escape.php