我正在使用php正则表达式,但我无法使用()
这是我的意见
<img src="http://www.example.com/image.jpg" title="title" />
我只需要src值,这是我的正则表达式'"<img src=\"(.*?)\".*?\/>"'
如果我可以像java模式一样检索第一组我的问题是解决的
preg_match_all('"<img src=\"(.*?)\".*?\/>"', $source, $re);
print_r($re);
并返回完整的图片代码,例如<img src="http://www.example.com/image.jpg" title="title" />
答案 0 :(得分:1)
您正在使用preg_match_all
,因此您也需要传递索引,使用print_r($re[1]);
来获得结果。
答案 1 :(得分:1)
要匹配单个字符串,preg_match
功能就足够了。您无需使用preg_matchall
功能。如果要匹配更多字符串,则可以使用preg_matchall
函数。并且首先尝试通过模式匹配确切的字符串,而不是去分组。如果无法匹配特定的字符串,那么请进行分组。
在下面,匹配src
属性的确切值。
您可以通过两种方式获得src
的值,
正则表达式:
(?<=src=\")[^\"]*
PHP代码:(通过match_all
)
<?php
$string = "<img src=\"http://www.example.com/image.jpg\" title=\"title\" />";
$regex = '~(?<=src=\")[^\"]*~';
preg_match_all($regex, $string, $matches);
print_r($matches);
?>
PHP代码:(通过match
)
<?php
$string = "<img src=\"http://www.example.com/image.jpg\" title=\"title\" />";
$regex = '~(?<=src=\")[^\"]*~';
if (preg_match($regex, $string, $m)) {
$yourmatch = $m[0];
echo $yourmatch;
}
?> //=> http://www.example.com/image.jpg
<强>解释强>
(?<=src=\")
此处使用正面后视。因此,正则表达式引擎将匹配标记放在src="
。[^\"]*
现在它开始匹配任何字符零次或多次但不匹配"
。当找到"
时,它会停止匹配字符。\K
<强>正则表达式:强>
src=\"\K[^\"]*
PHP代码(通过match
)
<?php
$string = "<img src=\"http://www.example.com/image.jpg\" title=\"title\" />";
$regex = '~src=\"\K[^\"]*~';
if (preg_match($regex, $string, $m)) {
$yourmatch = $m[0];
echo $yourmatch;
}
?> //=> http://www.example.com/image.jpg
<强>解释强>
\K
重置报告的匹配的起点。任何以前消费的字符都不再包含在最终匹配中。src=\"\K
因此它会丢弃之前匹配的src="
。[^\"]*
匹配任何字符零次或多次但不匹配"
答案 2 :(得分:0)
我明白了! 我们可以为第一个Grouped
编码print_r($re[1]);