如何使用PHP将所有空白区域修剪为“poo”以及之后的所有空格?
我想转此:
<code><div class="b-line"></div> \t
\n\n\n \t \n poo
<lol>
n \n \n \t </code>
对此:
<code><div class="b-line"></div>poo
<lol>
n</code>
此部分将始终位于字符串的开头:<code><div class="b-line"></div>
由于
编辑:对不起,我应该解释一下上面的所有内容都在一个字符串中,我只想要在 <code><div class="b-line"></div>
之后立即修剪空白 >并且紧接在 </code>
答案 0 :(得分:4)
$str = trim($str, "\t\n");
请参阅trim
答案 1 :(得分:3)
preg_*
函数提供whitespace escape sequence \s
,您可以使用它,因此您的正则表达式将是:
$regexp = '~...>\\s*([^<]*?)\\s*<~m'
也许您需要使用[\\s$]
而不仅仅是\\s
,我也不确定PCRE如何在这些情况下处理新行。
答案 2 :(得分:1)
我只想在
<code><div class="b-line"></div>
之后和</code>
之前立即修剪空白
可以完成:
preg_replace(',(?|(<code><div class="b-line"></div>)\s+|\s+(</code>)),', '$1', $str);
如果<code>
标记仅出现在字符串的开头/结尾,则您希望使用^
和$
来锚定表达式:
(?|^(<code><div class="b-line"></div>)\s+|\s+(</code>)$)
答案 3 :(得分:0)
@Vyktor的答案几乎是正确的。如果你只是对你的字符串(echo preg_replace('/\s/', '', $s);
)运行$s
,你会得到:
<code><divclass="b-line"></div>poo<lol>n</code>
测试片段:
<?php
$s = <<<EOF
<code><div class="b-line"></div>
poo
<lol>
n
</code>
EOF;
echo preg_replace('/\s/', '', $s);
?>
答案 4 :(得分:0)
我认为这种前瞻性和基于外观的正则表达式适用于你:
$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 );
<强>输出:强>
string(51) "<code><div class="b-line"></div>poo
<lol>
n</code>"