Php 如何仅删除HTML标记中的新行

Php 如何仅删除HTML标记中的新行,php,preg-replace,Php,Preg Replace,如何使用preg_replace仅删除HTML标记内的新行 例如: <table> <tr> <td></td> </tr> </table> Text here. Text here Text here. 文本在这里。此处文本 文本在这里。 因此,在函数处理上述代码后,返回值应为: <table> <tr> <td></td> </tr&

如何使用preg_replace仅删除HTML标记内的新行

例如:

<table>

<tr>

<td></td>
</tr>
</table>

Text here. Text here

Text here.

文本在这里。此处文本
文本在这里。
因此,在函数处理上述代码后,返回值应为:

<table>    <tr>    <td></td>    </tr>    </table>

Text here. Text here

Text here.

文本在这里。此处文本
文本在这里。
如何使用preg_replace仅删除HTML标记内的新行

从技术上讲是的,但实际上,HTML并不太关心换行符,实际上,每多个空格字符都被读取为一个空格字符。正如您的示例所示,您将\n替换为空格或\t,因此实际上是相同的,这使我想到您可以只执行以下操作:

$html = preg_replace('~(>[^>]*)(*BSR_ANYCRLF)\R([^<]*<)~', '$1 $3', $html);

$html=preg\u replace('~(>[^>]*)(*BSR\u ANYCRLF)\R([^可能有更聪明的方法来做这件事,但是,这将完成您的工作

$str = "test\n\n test2 <table>\n\n\n test 3</table>\n\n\n test4 test5";

while ($str2 = preg_replace('/(>[^<]*)\n([^<]*<)/', '\\1\\2', $str)) {
    if ($str2 == $str) break;
    $str = $str2;
}

echo ($str);
$str=“test\n\n test2\n\n\n test3\n\n\n test4 test5”;

而($str2=preg_替换('/(>[^
仅删除HTML标记中的新行:这真的很有创新性,为什么要这样做?你不能。抱歉。这实际上不是解析整个页面,只是一个小HTML代码。只有以下标记可用:table、ol、li、ul、a、blockquote、tr、td、tbodyHi,如果页面中确实有像:>和<这样的字符呢?我有tes测试代码并替换外部html元素之间的文本:
  • efewf
    • 测试。测试。测试。第一个
        和第二个
          之间的cod删除了新行,因此只有在没有子元素的情况下才要删除新行“@user1316394:这是因为该文本位于您要求的第一个和第二个标记之间。我收到以下错误:警告:preg_replace()[function.preg replace]:编译失败:(*动词)在偏移量13处无法识别。”in@user1316394:更新您的PCRE库或删除该谓词(*BSR\U ANYCRLF),如果字符串是utf-8编码的,您可以添加
          u
          修饰符。@user1316394:不知道,我不使用simplehtmldom有不同的原因,我也不建议您使用它。看看和/或哪些是PHP的一部分。