我的文本里面有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>
有什么建议吗?
答案 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>
此模式适用于任何空格。此外,空格是可选的,如第二个示例所示:
答案 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解析器解决方案。