Я пытаюсь изменить строку следующей формы, где каждое поле разделено вкладкой, за исключением первой, за которой следуют две или более вкладок.
"$str1 $str2 $str3 $str4 $str5 $str6"
Измененная строка будет иметькаждое поле обернуто в теги таблицы HTML, и должно быть отдельной строкой с отступом, как показано.
"<tr>
<td class="title">$str1</td>
<td sorttable_customkey="$str2"></td>
<td sorttable_customkey="$str3"></td>
<td sorttable_customkey="$str4"></td>
<td sorttable_customkey="$str5"></td>
<td sorttable_customkey="$str6"></td>
</tr>
"
Я попытался использовать код, подобный следующему, чтобы сделать это.
$patterns = array();
$patterns[0]='/^/';
$patterns[1]='/\t\t+/';
$patterns[2]='/\t/';
$patterns[3]='/$/';
$replacements = array();
$replacements[0]='\t\t<tr>\r\n\t\t\t<td class="title">';
$replacements[1]='</td>\r\n\t\t\t<td sorttable_customkey="';
$replacements[2]='"></td>\r\n\t\t\t<td sorttable_customkey="';
$replacements[3]='"></td>\r\n\t\t</tr>\r\n';
for ($i=0; $i<count($lines); $i++) {
$lines[$i] = preg_replace($patterns, $replacements, $lines[$i]);
}
Проблемазаключается в том, что экранированные символы (символы табуляции и новой строки) в массиве замены остаются экранированными в строке назначения, и я получаю следующую строку.
"\t\t<tr>\r\n\t\t\t<td class="title">$str</td>\r\n\t\t\t<td sorttable_customkey="$str2"></td>\r\n\t\t\t<td sorttable_customkey="$str3"></td>\r\n\t\t\t<td sorttable_customkey="$str4"></td>\r\n\t\t\t<td sorttable_customkey="$str5"></td>\r\n\t\t\t<td sorttable_customkey="$str6"></td>\r\n\t\t</tr>\r\n"
Как ни странно, эта строка, которую я пробовал ранее на , делает работа:
$data=preg_replace("/\t+/", "\t", $data);
Я что-то упустил?Есть идеи как это исправить?