猿问

如何使用 preg_replace PHP 从文件中删除文本

我想从public function CreateUser最多删除文本//pfCreateUser。所以基本上我想删除函数CreateUser。


例如test.php,我有一个名为的文件,在该文件中我有一个这样的文本。


public function CreateUser(Request $request)

    {

        another code here, include a-zA-Z0-9 and special character...

    } //pfCreateUser

public function CreateCompany(Request $request)

    {

        another code here, include a-zA-Z0-9 and special character...

    } //pfCreateCompany

这是我尝试的


$a = "test.php";

$b = file_get_contents("test.php");

file_put_contents($a, preg_replace("#public function CreateUser.*//pfCreateUser#m", "", $b));

但它不起作用。


我希望文件在删除文本后是这样的


public function CreateCompany(Request $request)

    {

        another code here, include a-zA-Z0-9 and special character...

    } //pfCreateCompany


胡子哥哥
浏览 154回答 3
3回答

叮当猫咪

preg_replace对我来说工作正常,前提是我在 dot all 模式下使用它,并带有/s修饰符。我使用了以下模式:public function CreateUser\(.*\/\/pfCreateUser\s*示例脚本:$output = preg_replace("/public function CreateUser\(.*\/\/pfCreateUser\s*/s", "", $input);echo $output;这打印:public function CreateCompany(Request $request)    {        another code here, include a-zA-Z0-9 and special character...    } //pfCreateCompany请注意.*,由于 dot all 模式,将匹配换行符/s。

万千封印

你可以在一行中用一个小正则表达式来做这个,然后把你想删掉的第一个和最后一个词:preg_replace('/public[\s\S]+?pfCreateUser/', '', $string);

慕标琳琳

file_put_contents($a, preg_replace("/^public function CreateUser[\s\S]*?pfCreateUser/", "", $b));
随时随地看视频慕课网APP
我要回答