【发布时间】:2012-11-26 14:33:13
【问题描述】:
我正在尝试获取帖子中第一个<a> 标记的href 属性的值,这是一个图像。
这是我到目前为止所拥有的:
$pattern = "/<a.+href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\").*>/i";
$output = preg_match_all($pattern, $post->post_content, $matches);
$first_link = $matches[1][0];
但是,这不起作用。
我有一个代码来获取<img> 标签的src 值,确实工作:
$pattern = "/<img.+src=[\'"]([^\'"]+)[\'"].*>/i";
$output = preg_match_all($pattern, $post->post_content, $matches);
$first_img = $matches[1][0];
由于我不是正则表达式和 php 方面的专家,所以我不知道自己做错了什么。
我也找不到任何体面的、有条理的正则表达式指南,所以一个链接也很有用!
【问题讨论】:
-
Here is the link you asked for。如果您通读本教程,您对正则表达式的掌握将大大增加。 But here is why you should rethink your overall approach。如果您向我们展示您的意见,这可能会有所帮助。最后,您的第二个示例可能无法正常工作,因为您使用
"作为字符串,但转义了其中的'。 -
感谢您的链接 - 我会读一读。至于为什么我应该重新考虑我的方法 - 很好的答案,这很有趣。不幸的是,这是我知道的唯一方法。请让我知道是否有任何其他方法可以更有效地做到这一点。至于第二个例子;最初,第二个示例中的
$pattern直接嵌入在$output行中,我只是将其向上移动以便在示例之间进行比较。这也可能是第一个示例故障的原因,对吗? -
...你刚刚做到了!谢谢! :)
-
是的,您现在拥有的两个答案基本上就是您拥有的两个选项。如果您可以使用我链接的库,则代码会变得更清晰,更易于阅读。如果没有,GoogleGuy 的方法就是要走的路。
标签: php regex wordpress preg-match-all