在此处输入图像描述,因此我在下面有这种格式的文本,我需要用空格替换第一个 CR LF 制表:
Contenu
2 encarts
12 encarts
Prepresse
Fichier fourni
我想要结果:
Contenu 2 encarts
12 encarts
Prepresse Fichier fourni
在此处输入图像描述,因此我在下面有这种格式的文本,我需要用空格替换第一个 CR LF 制表:
Contenu
2 encarts
12 encarts
Prepresse
Fichier fourni
我想要结果:
Contenu 2 encarts
12 encarts
Prepresse Fichier fourni
您能否提供有关您要格式化的文本来源的更多信息?似乎Contenu和Prepresse Fichier都是一个团体的名字
在这些组中,您有2 encarts、12 encarts和fourni等项目作为项目
首先是检测文本是组名还是项目,我希望可以从您的文本来自的源中检测到这一点。第二件事是正确地呼应这些项目。
编辑:
我使用数组做了很多工作,使用以下代码创建了您的输出:
$text = "Contenu\n\t2 encarts\n\t12 encarts\n\nPrepresse\n\tFichier fourni";
//divide the groups
$groups = explode("\n\n", $text);
//loop groups
foreach ($groups as $group) {
//get group name and items
$items = explode("\n\t", $group);
//loop items,
foreach ($items as $item => $value) {
switch ($item) {
case 0:
//first item is group name
echo $value . " ";
//get the length of this group name to align all items using spaces
$length = strlen($value) + 1;
break;
case 1: //second item is first value, what apears next to the group name
echo $value . "<br>";
break;
default: // other items, where the spaces are the length of the groupname
echo str_repeat(" ", $length) . $value . "<br>";
break;
}
}
//when an entire group is shown, leave an empty space
echo "<br>";
}
?>
将其显示为输出:
Contenu 2 encarts
12 encarts
Prepresse Fichier fourni
希望这可以帮助
使用正则表达式可以如下完成:
<?php
$text = "Contenu\n\t2 encarts\n\t12 encarts\n\nPrepresse\n\tFichier fourni";
echo $text."\n";
echo preg_replace('/((^.+)(\n\t))/ime', "str_replace('$3', ' ', '$0')", $text);
?>
这个的输出是:
Contenu
2 encarts
12 encarts
Prepresse
Fichier fourni
Contenu 2 encarts
12 encarts
Prepresse Fichier fourni