完全不懂正则,但最近一个小事情需要用到,求高手帮忙目的是实现从html代码中,截取相关数字:html代码如下,要截取的数字用红色标记<input type="hidden" name="idArticleslist" value="2425898,2427913,"><input type="hidden" id="firstidarticle" name="firstidarticle" value="2425898"><input type="hidden" name="pageflag" value="1"> </form> </div>
解决方案 »
- 怎样才能修改Linux口令
- 【求教】搭建网站后phpstudy数据库连接失败,请高手指教!
- 求助正责表达式
- 在php开发的WEB中,有关checkbox 多个选项中的问题? 值得讨论一下
- php查询数据库为什么不能正解的输出结果
- Fatal error: Allowed memory size of 587202560 bytes exhausted (tried to allocate 493123764 bytes) in
- 如何用FLASH表单结合PHP页发送邮件?
- 初学者的问题 学习php要用什么软件啊
- 从一棵动态生成的树中选则一个节点后,根据所选节点如何又在别处动态生产另一棵树,中间不再提交页面、
- 如何获得被引用的主机地址
- qq邮箱的添加附件功能是怎么实现的
- 动态DNS解析是怎么做到的?
$str = <<<HTML
<input type="hidden" name="idArticleslist" value="2425898,2427913,"><input type="hidden" id="firstidarticle" name="firstidarticle" value="2425898"><input type="hidden" name="pageflag" value="1"> </form> </div>
HTML;if (preg_match('/idArticleslist"\svalue="([\d\,]+)"/', $str, $match)) {
echo $match[1];
}
Array
(
[0] => 2425898
[1] => 2427913
)
[[email protected] php_project]$ cat main.php
<?php
$str = <<<EOF
<input type="hidden" name="idArticleslist" value="2425898,2427913,"><input type="hidden" id="firstidarticle" name="firstidarticle" value="2425898"><input type="hidden" name="pageflag" value="1"> </form> </div>
EOF;$n = preg_match('/<input.*name="idArticleslist".*value="(.*)"/iUs', $str, $matches);
if ($n) {
print_r(explode(',', trim($matches[1], ',')));
}
?>
<input type="hidden" name="idArticleslist" value="2425898,2427913,"><input type="hidden" id="firstidarticle" name="firstidarticle" value="2425sss98"><input type="hidden" name="pageflag" value="1"> </form> </div>
html;
preg_match('#(?<=idArticleslist).+?value="([^\"]+)"#s',$s,$m);
echo $m[1]; // 2425898,2427913,
正则:
<input type=\"hidden\" name=\"idArticleslist\" value=\"(.[^"]*)\">
正则就这么简单,需要转译的加一个反斜线,要匹配的都在括号里,防止匹配的太贪婪,你就告诉他[^"],意思是遇到双引号就匹配结束.这样就行了
给你推荐一个软件 RegexBuddy 这个软件用来测试正则表达式的,你可以借助它学一下正则,写程序不会正则是很麻烦的.