Php 预更换全部<;img>;参数
我已将所见即所得编辑器从旧版本升级到最新版本。图像尺寸的保存方式有所不同。用于向图像标记添加宽度和高度参数的旧版本编辑器。新编辑器将创建一个样式参数,并将宽度和高度添加为样式 我有一个preg_replace函数,我使用它可以包装一个Php 预更换全部<;img>;参数,php,image,html-parsing,preg-replace,preg-match,Php,Image,Html Parsing,Preg Replace,Preg Match,我已将所见即所得编辑器从旧版本升级到最新版本。图像尺寸的保存方式有所不同。用于向图像标记添加宽度和高度参数的旧版本编辑器。新编辑器将创建一个样式参数,并将宽度和高度添加为样式 我有一个preg_replace函数,我使用它可以包装一个,$Content); 如果很高兴知道,新编辑器存储的图像如下所示: $Content = preg_replace('#<img(.*?)src="([^"]*/)?(([^"/]*)\.[^"]*)"([^>]*?)>((?!</a&g
,$Content);
如果很高兴知道,新编辑器存储的图像如下所示:
$Content = preg_replace('#<img(.*?)src="([^"]*/)?(([^"/]*)\.[^"]*)"([^>]*?)>((?!</a>))#', '<a rel="group" class="fancybox fancy" title="" href="$2$3"><img$1src="$2$3"></a>', $Content);
<img alt="" src="" style="" />
而旧编辑器存储的图像如下所示:
$Content = preg_replace('#<img(.*?)src="([^"]*/)?(([^"/]*)\.[^"]*)"([^>]*?)>((?!</a>))#', '<a rel="group" class="fancybox fancy" title="" href="$2$3"><img$1src="$2$3"></a>', $Content);
<img alt="" src="" style="" />
如何重构preg_replace以复制完整的样式元素?向后兼容也很酷
感谢您的时间:)您可以进一步简化正则表达式,请注意,如果您希望输入正确,可以使用此解决方案,否则只需使用html解析器即可:
<img src="" width="404" height="228" alt="" />
$string='Some text Some text';
$new#u string=preg#u replace(“##i”,”$string);
变量转储(新字符串);
说明:
:匹配
src=“
:将除([^“]*)
之外的任何内容匹配零次或多次,并将其分组“
:匹配“*?/?>
,然后匹配任何内容,直到”
或/>
修饰符:匹配不区分大小写i
,您永远不知道=
前后可能有空格
正如Spudley在评论中提到的那样,你可能会(快速的谷歌搜索会找到几个选项),特别是如果你无法控制编辑器如何添加图像的话(虽然修改编辑器来添加链接可能更容易,这取决于哪一个是我个人可能不会尝试去做这件事,但可能会考虑它)。 无论如何,我离题了。使用这种方法,尽量简化正则表达式。您只需要将它包装在一个
“,$which_your_string_);
试试这个:
preg_replace('<img(.*)src="([^ "]*)"([^>]*)>', '<a href="$2"><img$1src="$2"$3></a>', $whatever_your_string_is);
$regex='#]*>((?!)#);
$replace='';
$Content=preg_replace($regex,$replace,$Content);
< /代码>您可以匹配所有元素,进行解析,然后使用原来的匹配数组替换旧的元素。您只需要将正则表达式与正则表达式扩展到几行代码。您可能需要考虑使用DOM解析器而不是正则表达式。不要使用正则表达式解析HTML。使用正则表达式解析HTML,您将面临悲伤和挫折。一旦HTML与您的期望发生变化,您的代码将被破坏。有关如何使用已编写、测试和调试的PHP模块正确解析HTML的示例,请参阅。感谢您的回答。我理解我应该使用DOM p阿瑟取而代之,并将在未来这样做。但就目前而言,普罗希德的答案对我来说是现成的。我注意到了你的建议:)