首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串末尾移除特定字符串

从字符串末尾移除特定字符串
EN

Stack Overflow用户
提问于 2013-11-12 16:03:05
回答 3查看 138关注 0票数 0

从字符串的末尾开始,我需要删除特定的字符串。我可以用一个循环来完成这个任务,但是我认为应该可以用正则表达式来实现。

示例:从输入字符串的末尾移除所有的注释和空格。

“你好,世界再好”

应该变成

“你好世界”。

我试过不同的排列

代码语言:javascript
运行
复制
$input = preg_replace('/(<br>| |&nbsp;)*$/', '', $input);

但最终我的判断力让我失望了。我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-12 16:29:53

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

代码语言:javascript
运行
复制
$string = "Hello world<br> <br>&nbsp; &nbsp; ";
$input = preg_replace('/(<br>| |&nbsp;)*$/', '', $string);
header('Content-Type: text/plain');
var_dump($input);

产出:

代码语言:javascript
运行
复制
string(11) "Hello world"

3v4l演示。

票数 1
EN

Stack Overflow用户

发布于 2013-11-12 16:11:44

不要使用regexes解析HTML。对于DOM它是:

代码语言:javascript
运行
复制
$doc = DOMDocument::loadHTML('Hello world<br> <br>&nbsp; &nbsp;');
$selector = new DOMXPath($doc);

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

输出:

代码语言:javascript
运行
复制
Hello World

但是,如果需要regex解决方案--尽管更了解它--请使用以下内容:

代码语言:javascript
运行
复制
preg_match('~(.*?)(&nbsp;|<br>)~', $str, $matches);
echo $matches[1];
票数 1
EN

Stack Overflow用户

发布于 2013-11-12 16:10:13

如果只是HTML/PHP标记,那么您可以使用php strip_tags函数更多信息

代码语言:javascript
运行
复制
$userInput ="Hello world<br> <br>&nbsp; &nbsp; ";

$input = rtrim(strip_tags($userInput));//to rtrim to remove any whitespace at the end
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19934001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档