使用通配符替换字符串 php [重复]

Posted

技术标签:

【中文标题】使用通配符替换字符串 php [重复]【英文标题】:replace string using wildcards php [duplicate] 【发布时间】:2021-03-24 09:42:24 【问题描述】:

我使用summernote 作为文本编辑器,当我添加图像时,它会添加文本style= "width: ***px;"* 是数字)。当我更改窗口大小时,这会导致问题。我想用 php 替换 width: ***px100%str_ireplace 可以使用任何通配符吗?

例如添加图片car.jpgsummernote 添加如下:

<img src="/images/car.jpg" style= "width:750px;">

我想要什么:

<img src="/images/car.jpg" style= "width:100%;">

或者只是删除所有样式部分。

【问题讨论】:

如果你在你的css样式表中添加img width: 100%; height: auto; ,那么这将推翻&lt;img width="..." height="..."&gt;。另一种方法是在您的 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

word怎样通配符替换内容?

notepad++如何替换两个字符之间的内容?内容跨行

php用一个空格替换多个空格[重复]

PHP正则表达式 - 替换一个反向引用[重复]

php 替换重复的字符串。在这个例子中,我需要手动从ACF中的单选按钮翻译语言。

wps怎么用替换功能