Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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 如果尚未包装,如何包装元素?_Php_Regex_Preg Replace - Fatal编程技术网

Php 如果尚未包装,如何包装元素?

Php 如果尚未包装,如何包装元素?,php,regex,preg-replace,Php,Regex,Preg Replace,我有一组内容,其中一些,但一些图像尚未包装。我想用preg_replace创建一个正则表达式,将这个包装器添加到所有没有它的img标记中。享受吧 preg_replace('/(?!\<span\sclass="the-image"\>)(<img[\sA-Z"\-_=\/.\d]*\/\>)(?!\<\/span\>)/i','<span class="the-image"\>$0</span>',$code); preg\u re

我有一组内容,其中一些
,但一些图像尚未包装。我想用preg_replace创建一个正则表达式,将这个包装器添加到所有没有它的img标记中。

享受吧

preg_replace('/(?!\<span\sclass="the-image"\>)(<img[\sA-Z"\-_=\/.\d]*\/\>)(?!\<\/span\>)/i','<span class="the-image"\>$0</span>',$code);
preg\u replace('/(?!\)(

EOT; $code=preg\u replace('/(?!\)(

*/

编辑2将正则表达式更改为和PHP以反映OP期望的答案

你确定吗?你在第二张图像上仍然有打开的跨度。是的,这将使
变成
链接不会进行替换,它只是显示正则表达式如何匹配目标应该是尚未包装的图像。我的意思是是的,所有没有结束包装的img标签都将用我的代码包装。
$code = <<< EOT
<span class="the-image"><img src="123" /></span><br />
<img src="1234" /><br />
<span class="the-image"><img src="blah/blah/blah" /></span>
EOT;

$code = preg_replace('/(?!\<span\sclass="the-image"\>)(<img[\sA-Z"\-_=\/.\d]*\/\>)(?!\<\/span\>)/i','<span class="the-image"\>$0</span>',$code);

/* $code will become this

<span class="the-image"><img src="123" /></span><br />
<span class="the-image"><img src="1234" /></span><br />
<span class="the-image"><img src="blah/blah/blah" /></span>

*/