$plainText = "line1\nline2\nline3";
$result = preg_replace('/$/m', '', preg_replace('/^/m', '
', $plainText));
// ^ 和 $ 常用功能是删去多余的空白,包括行首尾的空白和空行。
$withSpaces = " begin\n between\t\n\nend ";
$spaceRegex = '/(^\s+|\s+$)/m';
$result = preg_replace($spaceRegex, '', $withSpaces);
// 不但第三行被删除,第二行和第四行也合并成一行,中间的\t\n\n全部删除了,第二行末尾没有了换行符;
// 而真正的目的其实只是将\t\n\n替换为\n。
// 仔细看看正则表达式(^\s+|\s+$)可以知道,在\s+$中,\s可以匹配\t和\n,
// 所以\s+$可以匹配开始的\t\n,同样^\s+可以匹配结尾的\n,所以\t\n\n经过两步被彻底删除
begin
betweenend
^和$的总结