【问题标题】:Very simple editing in a regular expression pattern正则表达式模式中非常简单的编辑
【发布时间】:2011-07-28 19:27:34
【问题描述】:

如何将此正则表达式转换为仅在 src=* 中搜索,而不是所有以 http 开头并以 jpg、png、gif 结尾的链接?此外,我想获取 https 图像。 谢谢!

preg_match('!http://.+\.(?:jpe?g|png|gif)!Ui' , $content , $matches);

【问题讨论】:

标签: php regex


【解决方案1】:

在你的正则表达式前面加上否定断言来过滤掉常见的情况:

 (?<!src=["\']|src=)

“前缀”是指在您的! 之后和https?://.. 之前

preg_match('!(?<!src=["\']|src=)http://.+\.(?:jpe?g|png|gif)!Ui' , $content , $matches);

【讨论】:

  • 您好。 preg_match_all('(?&lt;!src=["\']|src=)', $content, $filtered); 警告:preg_match_all() [function.preg-match-all]:编译失败:在偏移量 0 处没有可重复的内容
  • 我不在 cmets 中提供辅导。
  • 是的,我可以。作为反效果,我要求您检查您的 /past/ 问题,并在 cmets 中提供额外帮助的问题上使用 ▲ upvote 箭头。达到投票上限后回来。
【解决方案2】:

你可以试试这个,它只捕获 src 标签并选择图片 url:

<img[^>]+src\s*=\s*['\"]([^'\"]+)['\"][^>]*>

【讨论】:

  • 您好! $pattern = "&lt;img[^&gt;]+src\s*=\s*['\"]([^'\"]+)['\"][^&gt;]*&gt;"; preg_match_all($pattern, $content, $filtered); 我收到此错误:警告:preg_match_all() [function.preg-match-all]: Unknown modifier ']'
  • @Punkis:您需要将正则表达式包含在分隔符中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2015-06-23
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
相关资源
最近更新 更多