直接从文件中删除字符串而不替换PHP中的实体文件


Remove string direct from file without replace the entity file in PHP

我试图通过寻找它的位置从文件中删除字符串,然后删除。我不想将实体文件存储在字符串中,而不是替换。我需要直接在文件上替换它,有什么办法可以做到吗?

我必须找到"#",然后删除,直到找到下一个。

的例子:从myfile.txt中删除#2数据

  #1|info1|info2|info3|#2|inf11|info12|inf22|#3|inf11|info12|inf22|
删除后

:

  #1|info1|info2|info3|#3|inf11|info12|inf22

我该怎么做?

PHP不提供任何直接操作文件内容的方法。您必须读入PHP变量,然后再写回文件。

在POSIX系统的C语言中,您可以使用mmap()

int fd = open("myfile.txt", O_RDWR);
struct stat stat_buf;
fstat(fd, &stat_buf);
size_t len = stat_buf.st_size;
char *contents = mmap(NULL, len, PROT_WRITE, MAP_SHARED, fd, 0);
char *num2 = strstr(contents, "#2"); // Find #2
char *num3 = strstr(num2, "#3"); // Find #3 after #2
memmove(num3, num2, len-(num3-contents)); // Shift everything from #3 over
memset(contents + len - (num3 - num2), num3 - num2); // Zero the end of the file
close(fd);