Php Regex trim或preg_替换空白,包括制表符和新行
如何使用PHP将所有空白区域修剪到“poo”,然后再修剪所有空白区域 我想谈谈这个问题:Php Regex trim或preg_替换空白,包括制表符和新行,php,regex,trim,Php,Regex,Trim,如何使用PHP将所有空白区域修剪到“poo”,然后再修剪所有空白区域 我想谈谈这个问题: <code><div class="b-line"></div> \t \n\n\n \t \n poo <lol> n \n \n \t </code> \t \n\n\n\t\n便便 n\n\n\t 为此: <code><div class="b-line"></div&g
<code><div class="b-line"></div> \t
\n\n\n \t \n poo
<lol>
n \n \n \t </code>
\t
\n\n\n\t\n便便
n\n\n\t
为此:
<code><div class="b-line"></div>poo
<lol>
n</code>
poo
n
此部分将始终位于字符串的开头:
$str = trim($str, "\t\n");
谢谢
编辑:很抱歉,我应该解释一下,上面的内容都是一个字符串,我只想在
之后和
之前立即删除空格
$str = trim($str, "\t\n");
看
请参阅preg.*
函数提供的,您可以使用这些函数,因此您的正则表达式将是:
$regexp = '~...>\\s*([^<]*?)\\s*<~m'
$regexp='~…>\\s*([^preg.*
函数提供了您可以使用的功能,因此您的正则表达式应该是:
$regexp = '~...>\\s*([^<]*?)\\s*<~m'
$regexp='~…>\\s*([^@Vyktor的答案几乎是正确的。如果您只是对字符串(即$s
)运行echo preg\u replace('/\s/','$s);
),您将得到:
<code><divclass="b-line"></div>poo<lol>n</code>
poon
测试代码段:
<?php
$s = <<<EOF
<code><div class="b-line"></div>
poo
<lol>
n
</code>
EOF;
echo preg_replace('/\s/', '', $s);
?>
@Vyktor的答案几乎是正确的。如果您仅对字符串(即$s
)运行echo preg\u replace('/\s/,''$s);
),您将得到:
<code><divclass="b-line"></div>poo<lol>n</code>
poon
测试代码段:
<?php
$s = <<<EOF
<code><div class="b-line"></div>
poo
<lol>
n
</code>
EOF;
echo preg_replace('/\s/', '', $s);
?>
我认为这种基于前视和后视的正则表达式适用于您:
$str = <<< EOF
<code><div class="b-line"></div> \t
\n\n\n \t \n poo
<lol>
n \n \n \t </code>
EOF;
$str = preg_replace_callback('#(?<=<code><div class="b-line"></div>)(.*?)(\s*<[^>]*>\s*)(.*?)(?=</code>)#is',
create_function('$m',
'return str_replace(array("\n", "\t", " "), "", $m[1]).$m[2].str_replace(array("\n", "\t", " "), "", $m[3]);'),
$str);
var_dump ( $str );
$str=我认为这个基于前视和后视的正则表达式将适合您:
$str = <<< EOF
<code><div class="b-line"></div> \t
\n\n\n \t \n poo
<lol>
n \n \n \t </code>
EOF;
$str = preg_replace_callback('#(?<=<code><div class="b-line"></div>)(.*?)(\s*<[^>]*>\s*)(.*?)(?=</code>)#is',
create_function('$m',
'return str_replace(array("\n", "\t", " "), "", $m[1]).$m[2].str_replace(array("\n", "\t", " "), "", $m[3]);'),
$str);
var_dump ( $str );
$str=
我只想在
之后和
之前立即修剪空白
$str = trim($str, "\t\n");
可通过以下方式完成:
preg_replace(',(?|(<code><div class="b-line"></div>)\s+|\s+(</code>)),', '$1', $str);
我只想在
之后和
之前立即修剪空白
$str = trim($str, "\t\n");
可通过以下方式完成:
preg_replace(',(?|(<code><div class="b-line"></div>)\s+|\s+(</code>)),', '$1', $str);
我更新是为了更好地解释,我不想修剪所有的行等。我只想在之后和之前立即修剪空白。我更新是为了更好地解释,我不想修剪所有的行等。我只想在之后和之前立即修剪空白。嗨,达伦,不是这样的这正是我想要做的。我只想在上一个字符之后修剪空格,然后在
之前修剪空格,因为我将此字符串用作块,如果用户键入,多余的字符或空格会导致显示新行。嗨,Darren,这不是我想要做的。我只想在上一个字符之后修剪空格xt字符,然后在
前面加空格,因为我将此字符串用作块,如果用户键入,多余的字符或空格会导致新行显示。您是否总是需要在
周围加上新行和空格,或者它可以是任何其他字符串,而不仅仅是
?嗨,anubhava,不,只是一个例子,它将是任何cMiddleOK中的ode根据您的评论编辑了我的答案,现在它不是
,它可以是任何其他字符串,就像
或
。嗯,它很接近,但似乎仍然没有替换新行…这个字符串来自a,我也尝试将\r添加到替换数组中,但它不起作用…有进一步的想法吗许多感谢串(81)“测试\n\n\n\n lol\n\n粗体\n\n\n\n测试”你是否总是需要新行和空格,或者它可以是任何其他字符串,而不仅仅是
?嗨,anubhava,不,只是一个例子,它将是中间的任何代码。根据你的评论编辑我的答案,现在它可以是任何其他字符串,而不是
或
。嗯,它是c丢失但似乎仍无法替换新行…此字符串来自a,我也尝试将\r添加到替换数组中,但不起作用…有进一步的想法吗?非常感谢字符串(81)“test\n\n\n\n lol\n\n bold\n\n\n\n\n\n测试”