正则表达式替换html标记中的第一个和最后一个空格

时间:2018-02-23 07:59:24

标签: php regex

我的文本里面有html标签。我需要在打开标签后和关闭标签之前仅更换一个或多个空格,但不能替换任何其他内容

例如,如果我有:

la la la <h1>   text text </h1> bla bla bla <b> text </b>

它会变成:

la la la <h1>text text</h1> bla bla bla <b>text</b>

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

$pattern = '/(<[^\/]*?>)\s*|\s*(<\/.*?>)/';
$str = 'la la la <h1>   text text </h1> bla bla bla <b> text </b>';
$substitution = '$1$2';

$result = preg_replace($pattern, $substitution, $str);

echo "The result of the substitution is ".$result;

这将为您提供The result of the substitution is la la la <h1>text text</h1> bla bla bla <b>text</b>

此模式适用于任何空格。此外,空格是可选的,如第二个示例所示:

https://regex101.com/r/9DFVIw/1

答案 1 :(得分:0)

如果你真的想要一个正则表达式的解决方案,正如你想要实现的那样,正则表达式可能不是最好的工具

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Qyun.settings")

from socketio import Middleware
from website_chat.views import sio
django_app = get_wsgi_application()
application = Middleware(sio, django_app)

import eventlet
import eventlet.wsgi
eventlet.wsgi.server(eventlet.listen(('', 8000)), application)

并使用反向引用(?<=>) +([^<]*) +(?=<\/) 替换匹配项以修剪它。

DEMO:https://regex101.com/r/MN6juN/3/

你也可以使用这个限制性更强的正则表达式:

\1

DEMO:https://regex101.com/r/MN6juN/4

并使用反向引用<([^>]*)> +([^<]*) +<\/\1> 替换匹配项以修剪它。

否则,请转到HTML解析器解决方案。