我在HTML页面中有这个链接。
<img id="catImage" width="250" alt="" src="http://dev-server2/image2.png" />
我希望获得src
的价值,并且与preg_match
以及所有这些正则表达式的东西不相处。这是对的吗?
preg_match(
"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([[a-zA-Z0-9]\/-._]*)\"/",
$artist_page["content"], $matches);
我得到一个空数组!
答案 0 :(得分:1)
这有用吗?
'/<img id="catImage"[^>]+src="([^"]*)"/'
答案 1 :(得分:1)
首先,正则表达式中处理src属性的部分不会考虑URL中显示的冒号。
我建议更改src部分(以及任何其他属性值)来代替关闭引用并捕获之间的所有内容:
... src = \“([^ \”] *)\“....
答案 2 :(得分:0)
"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([a-zA-Z0-9/.:_-]*)\"/"
应该这样做。请注意,我编辑了范围[ ... ]
部分。连字符(-
)具有特殊含义,因此我最后将其添加为范围内的文字。另外,我添加了:
字符(感谢@ user333699)。但是,这暗示您不应该尝试考虑任何有效的URL字符。相反,匹配任何内容,直到您知道 src
属性的整个值匹配为止:
"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([^\"]*)\"/"
即,任何不引用的内容("
)。
答案 3 :(得分:0)
我仍然对正则表达式很新,但我想我会把我的想法抛到那里并受到一些批评。表达式应该是(?<=(src=")).*(?=["])
吗? (还不是PHP格式化的)。这将获取src
属性的内容。
答案 4 :(得分:0)
请注意,为了获得src的值,你必须在preg_match之后执行额外的计算,因为你的匹配将返回整个标记。
根据你真正想用它做什么,可能值得潜入XPath。