Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 预更换全部<;img>;参数_Php_Image_Html Parsing_Preg Replace_Preg Match - Fatal编程技术网

Php 预更换全部<;img>;参数

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

我已将所见即所得编辑器从旧版本升级到最新版本。图像尺寸的保存方式有所不同。用于向图像标记添加宽度和高度参数的旧版本编辑器。新编辑器将创建一个样式参数,并将宽度和高度添加为样式

我有一个preg_replace函数,我使用它可以包装一个
,$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阿瑟取而代之,并将在未来这样做。但就目前而言,普罗希德的答案对我来说是现成的。我注意到了你的建议:)