我正在尝试从字符串的开头和结尾剪切<br>
或<br />
,空白和
的修剪。
有一些类似的问题(here和here),但我无法让所有3个人都使用PHP。
目前我有这个; #(^( |\s)+|( |\s)+$)#
需要与此结合使用:/(^)?(<br\s*\/?>\s*)+$/
但不知道如何完成它。我正在使用PHP preg_replace。
任何帮助都会很棒,谢谢。
答案 0 :(得分:4)
试试这段代码。
<?php
$test_cases = array(
"<br> spaces and br at the beginning ",
"<br /> spaces and br with / at the beginning ",
"<br> <br /> more examples ",
" even more tests <br />",
"<br/> moaaaar <br> ",
" <br> it will not remove the <br> inside the text <br /> "
);
$array = preg_replace('#^(<br\s*/?>|\s| )*(.+?)(<br\s*/?>|\s| )*$#i', '$2', $test_cases);
foreach($array as $item) {
echo htmlspecialchars($item) . "<br>";
}
?>
测试用例几乎是不言自明的。
编辑:
使用大型复杂字符串时,我遇到了上一个函数的问题。此外,我只是希望修剪的字符串结束这对我有用
preg_replace('#(<br\s*/?>)$#i', '', $string);
答案 1 :(得分:0)
如何使用一系列str_replace()
创建一个函数,这是(据我的理解)速度的两倍preg_replace()
,您可以轻松扩展该函数以添加更多匹配。只是一个想法...
$string = "My string<br />needs<br>a trim\n";
function trim_string($string) {
$string = str_replace("<br>",'',$string);
$string = str_replace("<br />",'',$string);
$string = str_replace(" ",'',$string);
$string = str_replace(" ",'',$string);
return $string;
}
echo trim_string($string);
输出Mystringneedsatrim