在php中使用foreach修改以空格开头的数组
第一次在这里发布,刚刚进入开发阶段 尝试使用多行修改文本文件的输出,有些以字符开头,有些以空格/制表符开头。我想让以制表符/空格开头的行与它前面的任何行连接起来。我一直在研究如何使用正则表达式来实现这一点,但我不确定如何构建它。我想我需要使用'foreach'来查看每一行,找到每一行都有空格,然后使用一系列正则表达式将它们连接到前一行。这就是我自己已经走了多远,以及我认为foreach应该在哪里在php中使用foreach修改以空格开头的数组,php,Php,第一次在这里发布,刚刚进入开发阶段 尝试使用多行修改文本文件的输出,有些以字符开头,有些以空格/制表符开头。我想让以制表符/空格开头的行与它前面的任何行连接起来。我一直在研究如何使用正则表达式来实现这一点,但我不确定如何构建它。我想我需要使用'foreach'来查看每一行,找到每一行都有空格,然后使用一系列正则表达式将它们连接到前一行。这就是我自己已经走了多远,以及我认为foreach应该在哪里 <?php $file_handle = fopen("parse.txt", "r");
<?php
$file_handle = fopen("parse.txt", "r");
while (!feof($file_handle)){
$each_line = fgets($file_handle);
foreach ($each_line ){
}
print $each_line . "<br />";
}
fclose($file_handle);
?>
特定文本文件位于
如果您去那里查看/parse文件夹的索引,我也有这个php的当前版本
我的下一步是通过在第一行分解将每一行分成单独的数组:在每一行中,但我仍然想尝试自己解决这个问题,然后再向你们这些了不起的人寻求帮助(但如果你们有任何见解,我不会把目光移开)
提前感谢您的帮助 用于将文件读入单个字符串。然后,您可以使用正则表达式来匹配空白,或者新行,然后是空白,等等
我会发布正则表达式,但我不确定你到底想做什么。您不能在此处测试正则表达式:您可能需要以下内容:
<?php
$file_handle = fopen("parse.txt", "r");
$key = null;
$arr = array();
while (!feof($file_handle)){
$each_line = fgets($file_handle);
if ($key && preg_match('/^\s+/', $each_line)) {
$arr[$key] .= ' ' . trim($each_line);
} else if (preg_match('/^([a-zA-Z]+):(.*)$/', $each_line, $m)) {
$key = $m[1];
$arr[$key] = trim($m[2]);
}
}
fclose($file_handle);
?>
此代码执行以下任务:
<?php
$output = "";
foreach (file('parse.txt') as $line) {
$output .= trim($line);
// if the current line starts noes not starts with a tab, we append
// a \n to it
if (substr($line, 0, 1) != "\t") {
$output .= "\n";
}
}
echo $output;
以下是一个缺少startsWithWhitespaceOrTab
函数的代码示例(该函数应该很容易编写,我将此作为示例)。其余的已经起作用了:
foreach (file('parse.txt', FILE_IGNORE_NEW_LINES) as $line) {
if (!startsWithWhitespaceOrTab($line)) {
echo "\n";
}
echo $line;
}
请参阅PHP函数和另一个解决方案。为您收集阵列中的行。不过我觉得我更喜欢“皮诺雄”
$file_handle = fopen("parse.txt", "r");
$fixed = array();
while (!feof($file_handle)){
$line = fgets($file_handle);
if (ctype_space($line[0])) { // Checks for whitespace
$fixed[count($fixed)-1].= trim($line); // Adds to previous line
} else {
$fixed[] = trim($line); // Otherwise, keep line as is
}
}
fclose($file_handle);
// Print
echo implode("\n",$fixed);
首先,读一下。然后,继续阅读manual.file\u get\u的内容,听起来我可能想朝这个方向走。我明天还得把这件事搞得一团糟,把它当作一个方向。谢谢你提供的测试regex的链接,我将不得不添加书签,我从不知道这个工具的存在。我试着复制/粘贴它,但没有输出任何信息,我注意到没有。尝试使用您创建的几个不同变量在最后一个括号内打印,但没有得到我期望的结果。明天我会仔细看看。谢谢你!最后尝试var\u dump($arr)
——它将行放入一个数组中。