如何 trim 所有 leading/trailing <br> 代码使用 php
How to trim all leading/trailing <br> code using php
我正在尝试使用 PHP 删除字符串中的所有前导和尾随 <br>
。
这是一个例子
<br><br>
Hello<br>
World<br>
<p>This is a message<br>...</p>
<br><br><br><br>
我要return
Hello<br>
World<br>
<p>This is a message<br>...</p>
我尝试执行以下操作
echo trim($str, '<br>');
但它不会删除它们。如何删除新行 html 代码?
将 preg_replace
与开头 ^
和结尾 $
锚点一起使用:
$string = preg_replace('/^(<br>){0,}|(<br>){0,}$/', '', $string);
或多行:
$string = preg_replace('/^(<br>){0,}|(<br>){0,}$/m', '', $string);
您也可以 trim()
多次:
while($string !== ($string = trim($string, '<br>'))){}
$p=array(
'<br><br>',
'Hello<br>',
'World<br>',
'<p>This is a message<br>...</p>',
'<br><br><br><br>'
);
function trimdeluxe($str, $sub)
{
$parts=explode($sub, $str);
for ($x=0; $x<2; $x++) {
foreach ($parts as $i=>$v) {
if (!strlen($v)) {
unset($parts[$i]);
} else {
break;
}
}
$parts=array_reverse($parts);
}
return implode($sub,$parts);
}
foreach ($p as $str) {
print $str . ' -> ' . trimdeluxe($str, '<br>') . "\n";
}
这个函数可以完成这项工作。真的也适用于任何其他事情。
//remove all leading and trailing occurences of needle ($n) from haystack ($h)
function trimAll($h, $n){
if(!$h = trim($h,$n)){
trimAll($h, $n);
}
return $h;
}
我编写的这个函数可以更好地完成工作,因为它让我更灵活地删除哪些字符,以及默认情况下此函数何时首先按顺序删除 leading/trailing 个字符:
- 任意标签
- 任何新行
- 任何
- 任何
- 任意标签
- 任何新行
function trimString($str, $myList = array("\t","\n", "<br>","<br />", "\t","\n") ){
if( ! is_array($myList) ){
$charsToTrim[] = $chr;
} else {
$charsToTrim = $myList;
}
foreach($charsToTrim as $chr){
$len = strlen($chr);
$nlen = $len * -1;
while( substr($str, 0, $len) == $chr){
$str = trim(substr($str, $len));
}
while( substr($str, $nlen) == $chr){
$str = trim(substr($str, 0, $nlen));
}
}
return $str;
}
使用
// default use case
echo trimString($message);
或
//remove only one string
echo trimString($message, '<br>'); // remove only the leading training '<br>'
或
//remove more than 1 string in order
echo trimString($message, array('<br>'<br />') );
我希望这对外面的人有帮助:)
我正在尝试使用 PHP 删除字符串中的所有前导和尾随 <br>
。
这是一个例子
<br><br>
Hello<br>
World<br>
<p>This is a message<br>...</p>
<br><br><br><br>
我要return
Hello<br>
World<br>
<p>This is a message<br>...</p>
我尝试执行以下操作
echo trim($str, '<br>');
但它不会删除它们。如何删除新行 html 代码?
将 preg_replace
与开头 ^
和结尾 $
锚点一起使用:
$string = preg_replace('/^(<br>){0,}|(<br>){0,}$/', '', $string);
或多行:
$string = preg_replace('/^(<br>){0,}|(<br>){0,}$/m', '', $string);
您也可以 trim()
多次:
while($string !== ($string = trim($string, '<br>'))){}
$p=array(
'<br><br>',
'Hello<br>',
'World<br>',
'<p>This is a message<br>...</p>',
'<br><br><br><br>'
);
function trimdeluxe($str, $sub)
{
$parts=explode($sub, $str);
for ($x=0; $x<2; $x++) {
foreach ($parts as $i=>$v) {
if (!strlen($v)) {
unset($parts[$i]);
} else {
break;
}
}
$parts=array_reverse($parts);
}
return implode($sub,$parts);
}
foreach ($p as $str) {
print $str . ' -> ' . trimdeluxe($str, '<br>') . "\n";
}
这个函数可以完成这项工作。真的也适用于任何其他事情。
//remove all leading and trailing occurences of needle ($n) from haystack ($h)
function trimAll($h, $n){
if(!$h = trim($h,$n)){
trimAll($h, $n);
}
return $h;
}
我编写的这个函数可以更好地完成工作,因为它让我更灵活地删除哪些字符,以及默认情况下此函数何时首先按顺序删除 leading/trailing 个字符:
- 任意标签
- 任何新行
- 任何
- 任何
- 任意标签
- 任何新行
function trimString($str, $myList = array("\t","\n", "<br>","<br />", "\t","\n") ){
if( ! is_array($myList) ){
$charsToTrim[] = $chr;
} else {
$charsToTrim = $myList;
}
foreach($charsToTrim as $chr){
$len = strlen($chr);
$nlen = $len * -1;
while( substr($str, 0, $len) == $chr){
$str = trim(substr($str, $len));
}
while( substr($str, $nlen) == $chr){
$str = trim(substr($str, 0, $nlen));
}
}
return $str;
}
使用
// default use case
echo trimString($message);
或
//remove only one string
echo trimString($message, '<br>'); // remove only the leading training '<br>'
或
//remove more than 1 string in order
echo trimString($message, array('<br>'<br />') );
我希望这对外面的人有帮助:)