PHP替换文件中的多行

时间:2017-10-25 12:18:56

标签: php variables line fopen fwrite

我可以选择文件的一行(例如 dummy.php )并将其替换为存储在变量中的文本,名为$currentdate,但我想选择几行,并用几个变量替换它们。例如:

第二行

$site_name

$URL在第4行,

第6行

$protocol

第8行

$author

第10行

$description

和 第12行$currentdate

我已经制作了这段代码,取代了第二行:

        $currentdate = date('d F Y');
$filename = getcwd() . "/dummy.php"; 
$date_line = 1; 
$lines = file( $filename , FILE_IGNORE_NEW_LINES ); 
$lines[$date_line] =    "$currentdate";
file_put_contents( $filename , implode( "\n", $lines ) );

我重复一下这个问题,如何在几行中添加几个变量? 此问题中给出了示例变量和行号。 此外,我已经制作了一个代码,但我不知道它是否会起作用。我无法尝试将此代码添加到我的项目文件中,因为我害怕我的代码更糟糕并且禁用其他代码,这些代码也位于该页面中。 这是未经测试的代码:

$site_name_line = 1; 
$URL_line = 3; 
$protocol_line = 5; 
$author_line = 7; 
$description_line = 9; 
$currentdate_line = 11;
$lines = file( $filename , FILE_IGNORE_NEW_LINES ); 
$lines[$site_name_line] =   "$site_name";
$lines[$URL_line] = "$URL";
$lines[$protocol_line] =    "$protocol";
$lines[$author_line] =  "$author";$lines[$description_line] =   "$description";$lines[$currentdate_line] =  "$currentdate";
file_put_contents( $filename , implode( "\n", $lines ) );

2 个答案:

答案 0 :(得分:1)

我自己找到了答案。我没想到,我可以。但我做到了。这是整个PHP代码:

from django.contrib.auth.models import User
from django import forms

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput)

class Meta:
    model = User
    fields = ['username', 'email', 'password', 'address', 'phone_number']

答案 1 :(得分:0)

/**
 * Replace lines with given content.
  *
  * $substitutions array should look
  * [
  *   1 => "new first line content",
  *   4 => "new fourth line content",
  * ]
  *
  * @param string $filename
  * @param array $substitutions
  */
  function replaceLines($filename, array $substitutions) {
     $lines = file($filename);

     foreach ($lines as $lineNumber => $lineContent) {
         if (isset($substitutions[$lineNumber])) {
             $lines[$lineNumber] = $substitutions[$lineNumber];
         }
     } 

     file_put_contents($filename, $lines);
 }

当然,这并不能处理所有可能的边缘情况,例如,当您无法访问该文件或者您在替换数组中提供不存在的行时。