Php 定义文件位置数组,解析和替换。其中';这是我的错误吗?
我试图用文件URL列表定义一个数组,然后对每个文件进行解析,如果找到预定义字符串,则替换该字符串。由于某些原因,我所拥有的不起作用,我不确定什么是不正确的:Php 定义文件位置数组,解析和替换。其中';这是我的错误吗?,php,arrays,replace,Php,Arrays,Replace,我试图用文件URL列表定义一个数组,然后对每个文件进行解析,如果找到预定义字符串,则替换该字符串。由于某些原因,我所拥有的不起作用,我不确定什么是不正确的: <?php $htF = array('/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.exten
<?php
$htF = array('/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.extension', '/home/folder/file.extension');
function update() {
global $htF;
$handle = fopen($htF, "r");
if ($handle) {
$previous_line = $content = '';
while (!feof($handle)) {
$current_line = fgets($handle);
if(stripos($previous_line,'PREDEFINED SENTENCE') !== FALSE)
{
$output = shell_exec('URL.COM');
if(preg_match('#([0-9]{1,3}\.){3}[0-9]{1,3}#',$output,$matches))
{
$content .= 'PREDEFINED SENTENCE '.$matches[0]."\n";
}
}else{
$content .= $current_line;
}
$previous_line = $current_line;
}
fclose($handle);
$tempFile = tempnam('/tmp','allow_');
$fp = fopen($tempFile, 'w');
fwrite($fp, $content);
fclose($fp);
rename($tempFile,$htF);
chown($htF,'admin');
chmod($htF,'0644');
}
}
array_walk($htF, 'update');
?>
任何帮助都将不胜感激 有这样一行:
if(stripos($previous_line,'PREDEFINED SENTENCE') !== FALSE)
我想你只是想要一个在那里。是吗?- 您有打开该文件的权限吗
- 您有写入/tmp的权限吗
- 您是否具有写入目标文件或文件夹的权限
- 您有权访问chown吗
- 你查过你的正则表达式了吗?试试看它是否有效
尝试添加错误消息或为这些失败条件引发异常。您正在更新函数中使用
$htF
作为全局,这意味着您正在尝试fopen()
数组
$fh = fopen($htF, 'r');
将被解析为
$fh = fopen('Array', 'r');
并返回false,除非您碰巧有一个名为“Array”的文件
您还没有为函数指定任何参数,因此array\u walk无法传入它当时正在处理的数组元素。否。stripos可能返回
0
(字符串开头),它是==FALSE
,但不是==FALSE
(未找到)。类型比较在这里非常重要,我忘了包括我通过SSH运行脚本,它没有返回这样的文件或目录/file.extension:第1行:?php/home/folder/file.extension:第2行://:是一个目录/home/folder/file.extension:第3行://:是一个目录/home/folder/file.extension:第4行:意外标记附近的语法错误('/home/folder/file.extension:第4行:
$htF=array('/home/folder/file.extension'、'/home/folder/file.extension'、'/home/folder/file.extension'、'/home/folder/file.extension')因此,您的错误出现在第4行之前,这显然是您没有粘贴的,因为第4行是$htF=array(etc)
看起来不错。语法错误意味着文件的基本语法有某种错误,与我上面提到的任何错误都没有任何关系。此外,如果/home/folder/file.extension
不存在,脚本也无法工作。您需要创建此文件。对不起,如果我理解,第1行是这样的显然,如果任何被定义的文件/URL不存在,那么整个脚本都会失败?我该如何让脚本在具有有效文件的数组成员上执行函数,并跳过不存在的数组元素?那么我该如何解决这个问题?函数更新($htF){…}
并从函数中删除全局定义。这样可以让arraywalk传入其当前数组元素。@knittl你是什么意思?我不认为我在URL中使用了协议,是吗?哦…我的错。我误解了,对不起