【问题标题】:PHP single quotes regexPHP单引号正则表达式
【发布时间】:2011-03-31 11:23:09
【问题描述】:

此话题为PHP get image src的备注

所以我们有一个变量,里面有代码(只有图像):

$image = "<img src='http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG' height='32' width='32' alt=''/>";

我们怎样才能得到这张图片的src?我们应该把它扔给一些新的变量。

想用正则表达式,试过这个(不行):

preg_match('@src=\'([^"]+)\'@', $image, $src);

问题是 - 有单引号而不是双引号。

最后,我们必须得到:

$src = 'http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG';

搜索真正的正则表达式。


如果我使用'@src=\'([^"]+?)\'@'print_r($src) 给出:

Array (
[0] => src='http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG'
[1] => http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG
)

不需要数组中的第一个值。

谢谢。

【问题讨论】:

  • $src = $src[1] ?我不知道你的意思。使用 print_r( $src ) 查看匹配数组,并获得所需的值。

标签: php html regex


【解决方案1】:

表达式[^"]+ 很贪心。要使其在达到' 后立即停止匹配,请使用[^"]+?

我假设您的意思是[^']+。写这个也能解决你的问题。

最后将$src赋值给$src[1],得到第一个分组表达式。

【讨论】:

  • 给出 - 数组 ([0] => src='gravatar.com/avatar/…' [1​​] => gravatar.com/avatar/…)
  • @WorkingHard,更新答案。
  • 如果他只是按照您的建议更正了角色类别,那么贪婪就不会成为问题。顺便说一句,字符类中的单引号需要像其他的一样被转义,即[^\']+
猜你喜欢
  • 2013-10-20
  • 1970-01-01
  • 2011-12-18
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
相关资源
最近更新 更多