我一直在寻找一段时间来寻找使用PHP脚本删除文件中的文本块的解决方案。
似乎有许多选项可以删除文本行,但不能删除文本块。我曾尝试使用preg_replace ("/^$start.*?$end/s", $replace, $fdata)
以下内容,但未找到有效的解决方案。
我确信有人已经这样做了,所以任何帮助都会非常感激。
$start = "# Copyright 2000-";
$end = "Agreement.";
# This software product may only be used strictly in accordance
# with the applicable written License Agreement.
答案 0 :(得分:5)
您需要multi-line mode(/m
),否则您的正则表达式不会跨多行捕获。此外,您应该使用preg_quote()
来转义正则表达式参数,否则您可能会得到不需要的结果(例如,在$end
中,它有一个点,这是一个正则表达式字符,当您希望它匹配时单期。)
$regex = "/^" . preg_quote( $start, '/') .".*?". preg_quote( $end, '/') . "/sm";
preg_replace ( $regex, $replace, $fdata);