字符匹配的问题请问怎么在一堆源码中匹配以下字符 img id="main-image" src="http://ecx.images-mazon.com/images/I/41Auzc7RBPL._SY300_.jpg" 我主要是想获取到图片的地址,其中41Auzc7RBPL._SY300_(图片的文件名称是随机产生的,每次都不一样的), 请问怎么获取到http://ecx.images-mazon.com/images/I/41Auzc7RBPL._SY300_.jpg 分享到: ------解决方案--------------------用正则处理最方便: $str = '请问怎么在一堆源码中匹配以下字符 img id="main-image" src="http://ecx.images-mazon.com/images/I/41Auzc7RBPL._SY300_.jpg"'; $p = '#img\s*id="main-image"\s*src="(http://ecx\.images-mazon\.com/images/I/.+\.(jpg------解决方案--------------------gif------解决方案--------------------jpeg------解决方案--------------------png))"#U'; preg_match($p, $str, $result) && var_dump($result);登入後複製 根据情况也可以解析为DOM: $html = ''; $doc = new DOMDocument(); $doc->loadHTML($html); echo $doc->getElementById('main-image')->getAttribute('src');登入後複製 经循环100000次测试,后者的速度是前者正则的7倍,而且随着测试源字符串的体积增大,差距将可能更大------解决方案--------------------$str='img id="main-image" src="http://ecx.images-mazon.com/images/I/41Auzc7RBPL._SY300_.jpg"'; $p = ------解决方案--------------------img id="main-image" src="(.*)"------解决方案--------------------iUs; preg_match($p, $str, $result); print_r($result); //如果你只需要对获取到的网址里那个图片名称那么你需要分割 $ep=explode('/',$result[0]); echo $ep[5];登入後複製