PHP preg_替换使正则表达式可选?
我有一些我正试图解析的内容 我有html,在html中我想用一个自定义字符串替换我的所有img标记。现在我遇到的一个问题是,一些内容进来了:图像标签在一个锚之间 前PHP preg_替换使正则表达式可选?,php,regex,parsing,preg-replace,Php,Regex,Parsing,Preg Replace,我有一些我正试图解析的内容 我有html,在html中我想用一个自定义字符串替换我的所有img标记。现在我遇到的一个问题是,一些内容进来了:图像标签在一个锚之间 前 下面的代码我有作品…但我希望它是可选的,所以在没有锚标记是由一个img标记包围的情况下,有没有人有任何关于regex的好资源或可以帮助我 谢谢大家! $content = preg_replace('#<a.*?>'.$image_tag.'</a>#i', "{$image_id}", $content
下面的代码我有作品…但我希望它是可选的,所以在没有锚标记是由一个img标记包围的情况下,有没有人有任何关于regex的好资源或可以帮助我
谢谢大家!
$content = preg_replace('#<a.*?>'.$image_tag.'</a>#i', "{$image_id}", $content);
$content=preg_replace('#'.$image_tag'.#i',“{$image_id},$content);
- 标记后的问号使该标记成为可选标记
- 使用
将多个令牌分组(不创建捕获组)(?…)
- 将这些组合在一起,
使组成为可选组(?…)?
$content = preg_replace('#(?:<a.*?>)?'.$image_tag.'(?:</a>)?#i',
"{$image_id}",
$content);
$content=preg#u replace(“#(?:)?”.$image_tag.“(?:)?#i”,
“{$image_id}”,
$content);
您可能还想看看不基于正则表达式的替代解决方案,例如使用HTML解析器。有什么原因吗
$content = preg_replace('#'.$image_tag.'#i', "{$image_id}", $content);
不管用吗?如果正则表达式上没有“^”和“$”锚点,则它应该只在数据中的任何位置搜索$image\u标记,无论是否被标记包围。如果不起作用,可以尝试:
$content = preg_replace('#(<a.*?>)?'.$image_tag.'(</a>)?#i', "{$image_id}", $content);
$content=preg_replace('#()?'.$image_tag'.()?#i',“{$image_id},$content”);
这使得和标记成为子模式,后跟?修饰符(即子模式可能出现0或1次)HTML不是一种正则语言,因此不适合正则表达式。使用DOM/HTML解析器。它们使用起来很简单,不再是。。。所以我们真的应该为正则表达式设置一个html解析问题的自动响应程序。
$content = preg_replace('#(<a.*?>)?'.$image_tag.'(</a>)?#i', "{$image_id}", $content);