Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regex trim或preg_替换空白,包括制表符和新行_Php_Regex_Trim - Fatal编程技术网

Php Regex trim或preg_替换空白,包括制表符和新行

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

如何使用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>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测试”