如何修剪<br/>,空格以及字符串的开头和结尾

时间:2014-02-25 03:29:11

标签: php regex preg-replace

我正在尝试从字符串的开头和结尾剪切<br><br />,空白和&nbsp;的修剪。

有一些类似的问题(herehere),但我无法让所有3个人都使用PHP。

目前我有这个; #(^(&nbsp;|\s)+|(&nbsp;|\s)+$)#需要与此结合使用:/(^)?(<br\s*\/?>\s*)+$/但不知道如何完成它。我正在使用PHP preg_replace。

任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:4)

试试这段代码。

<?php

$test_cases = array(
    "<br>&nbsp; spaces and br at the beginning&nbsp;",
    "<br /> spaces and br with / at the beginning &nbsp;",
    "<br> <br /> more examples &nbsp;",
    "&nbsp; even more tests <br />",
    "<br/> moaaaar <br> &nbsp;",
    "&nbsp;<br> it will not remove the <br> inside the text <br />&nbsp;"
);

$array = preg_replace('#^(<br\s*/?>|\s|&nbsp;)*(.+?)(<br\s*/?>|\s|&nbsp;)*$#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&nbsp;string<br />needs<br>a trim\n";

function trim_string($string) {
    $string = str_replace("<br>",'',$string);
    $string = str_replace("<br />",'',$string);
    $string = str_replace("&nbsp;",'',$string);
    $string = str_replace(" ",'',$string);
    return $string;
}
echo trim_string($string);

输出Mystringneedsatrim