从字符串的末尾我需要删除特定的字符串。我可以用循环来做到这一点,但我认为用正则表达式应该是可能的。
示例:删除所有 <br>、 和我输入字符串末尾的空格。
"你好世界<br> <br> "
应该成为
“你好世界”。
我尝试了各种排列
$input = preg_replace('/(<br>| | )*$/', '', $input);
但最后我的正则表达式知识让我失望了。我怎样才能做到这一点?
从字符串的末尾我需要删除特定的字符串。我可以用循环来做到这一点,但我认为用正则表达式应该是可能的。
示例:删除所有 <br>、 和我输入字符串末尾的空格。
"你好世界<br> <br> "
应该成为
“你好世界”。
我尝试了各种排列
$input = preg_replace('/(<br>| | )*$/', '', $input);
但最后我的正则表达式知识让我失望了。我怎样才能做到这一点?
不要使用正则表达式来解析 HTML。使用 DOM 它是:
$doc = DOMDocument::loadHTML('Hello world<br> <br> ');
$selector = new DOMXPath($doc);
echo trim($selector->query('//text()')
->item(0)
->nodeValue
);
输出:
Hello World
但是,如果需要正则表达式解决方案 - 尽管更好地了解它 - 请使用以下内容:
preg_match('~(.*?)( |<br>)~', $str, $matches);
echo $matches[1];
您尝试过的正则表达式工作得很好。将Content-Type
标头设置为plain
可能有助于调试:
$string = "Hello world<br> <br> ";
$input = preg_replace('/(<br>| | )*$/', '', $string);
header('Content-Type: text/plain');
var_dump($input);
输出:
string(11) "Hello world"
如果您正在剥离的只是 HTML/PHP 标签,您可以使用 phpstrip_tags
函数更多信息
$userInput ="Hello world<br> <br> ";
$input = rtrim(strip_tags($userInput));//to rtrim to remove any whitespace at the end