使用通配符替换字符串 php [重复]
Posted
技术标签:
【中文标题】使用通配符替换字符串 php [重复]【英文标题】:replace string using wildcards php [duplicate] 【发布时间】:2021-03-24 09:42:24 【问题描述】:我使用summernote 作为文本编辑器,当我添加图像时,它会添加文本style= "width: ***px;"
(*
是数字)。当我更改窗口大小时,这会导致问题。我想用 php 替换 width: ***px
为 100%
。 str_ireplace
可以使用任何通配符吗?
例如添加图片car.jpg
summernote 添加如下:
<img src="/images/car.jpg" style= "width:750px;">
我想要什么:
<img src="/images/car.jpg" style= "width:100%;">
或者只是删除所有样式部分。
【问题讨论】:
如果你在你的css样式表中添加img width: 100%; height: auto;
,那么这将推翻<img width="..." height="...">
。另一种方法是在您的 CSS 样式表中添加 img display: block; height: auto;
。
或者,在 php 中,使用 preg_replace('/(?:img.*)(width|height ?= ?['"].*['"])/', "", $your_html);
从 img 元素中完全删除 width 和 heidht。
Summernote 是 javascript,你不能在 PHP 中对其输出做任何事情。我怀疑您要问的问题是如何指定图像高度。当你问这个问题时,请包括 Javascript 代码,而不是生成的 HTML。
@miken32 如果存储了输出,可以使用PHP。
@user3783243 “输出”在客户端 Web 浏览器上。 PHP 在服务器上运行。
【参考方案1】:
\d+
是任意数字,(假设不使用小数)与preg_replace
一起使用,
str_ireplace
不能使用通配符。 i
修饰符可用于忽略正则表达式中的大小写敏感性。
所以preg_replace
的正则表达式是:
style= "width: \d+px;"
如果间距不同,您可以使用:
style=\h*"width:\h*\d+px;"
或
style=\h*("|\')width:\h*\d+px;\1
如果引用也可以变化。
preg_replace('/style=\h*("|\')width:\h*\d+px;\1/i', 'style= "width:100%;"', '<img src="/images/car.jpg" style= "width:750px;">');
()
是一个分组,它是第一组,可以在正则表达式中作为反向引用 (\1
) 访问。 \h
是一个水平空格(制表符或空格)。 *
是一个量词,表示 0 个或多个字符。 +
是另一个量词,表示一个或多个。
所以\h*\d+
表示数字前可以有任意数量的空格,但数字必须存在。
这假定您的 with 值始终是整数和像素。如果单位不同或允许使用小数/百分比,则需要进行不同的分组。
【讨论】:
非常感谢,我试试看,我在理解正则表达式时遇到了一些麻烦,但我会继续阅读它 任何特定的部分?您可以使用 regex101.com 查看零件的处理方式。这是第一个例子,regex101.com/r/FLsOfX/1以上是关于使用通配符替换字符串 php [重复]的主要内容,如果未能解决你的问题,请参考以下文章