0

从字符串的末尾我需要删除特定的字符串。我可以用循环来做到这一点,但我认为用正则表达式应该是可能的。

示例:删除所有 <br>、 和我输入字符串末尾的空格。

"你好世界<br> <br>    "

应该成为

“你好世界”。

我尝试了各种排列

$input = preg_replace('/(<br>| |&nbsp;)*$/', '', $input);

但最后我的正则表达式知识让我失望了。我怎样才能做到这一点?

4

3 回答 3

1

不要使用正则表达式来解析 HTML。使用 DOM 它是:

$doc = DOMDocument::loadHTML('Hello world<br> <br>&nbsp; &nbsp;');
$selector = new DOMXPath($doc);

echo trim($selector->query('//text()')
    ->item(0)
    ->nodeValue
);

输出:

Hello World

但是,如果需要正则表达式解决方案 - 尽管更好地了解它 - 请使用以下内容:

preg_match('~(.*?)(&nbsp;|<br>)~', $str, $matches);
echo $matches[1];
于 2013-11-12T16:11:44.103 回答
1

您尝试过的正则表达式工作得很好。将Content-Type标头设置为plain可能有助于调试:

$string = "Hello world<br> <br>&nbsp; &nbsp; ";
$input = preg_replace('/(<br>| |&nbsp;)*$/', '', $string);
header('Content-Type: text/plain');
var_dump($input);

输出:

string(11) "Hello world"

3v4l 演示。

于 2013-11-12T16:29:53.410 回答
-2

如果您正在剥离的只是 HTML/PHP 标签,您可以使用 phpstrip_tags函数更多信息

$userInput ="Hello world<br> <br>&nbsp; &nbsp; ";

$input = rtrim(strip_tags($userInput));//to rtrim to remove any whitespace at the end
于 2013-11-12T16:10:13.397 回答