从字符串的末尾我需要删除特定的字符串。我可以通过一个循环来做到这一点,但我认为应该可以使用正则表达式。
示例:全部删除< br>,& nbsp;和输入字符串末尾的空格。
“Hello world< br>< br>& nbsp;& nbsp;”
应该成为
“Hello world”。
我尝试了各种
的排列$input = preg_replace('/(<br>| | )*$/', '', $input);
但最终我的正则表达式知识让我失望。我怎么能这样做?
答案 0 :(得分:1)
不要使用正则表达式来解析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];
答案 1 :(得分: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"
答案 2 :(得分:-2)
如果仅剥离HTML / PHP标记,则可以使用php strip_tags
函数more info
$userInput ="Hello world<br> <br> ";
$input = rtrim(strip_tags($userInput));//to rtrim to remove any whitespace at the end