从字符串中获取子字符串的正则表达式

yzwgh 2008-12-06 05:18:49

现有字符串<p:foreach items="111" var="222">333</p:foreach>,如何用preg_match_all获取111,222,333处的字符串?
...全文
311 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
an9ryfr09 2008-12-06
  • 打赏
  • 举报
回复
我这个正则表达式比较长,因为考虑的比较严谨。例如items=的等号之间是否有空格,例如items="你使用的是单引号或是双引号。都可以匹配。如果你的html源代码不是很规则,建议采用我的。
an9ryfr09 2008-12-06
  • 打赏
  • 举报
回复
$str = '<p:foreach items="111" var="222">333 </p:foreach>'; 
preg_match_all('/<p:foreach items\s*=\s*[\"\']??([^\"\']+)\s*[\"\']??\s*var\s*=\s*[\"\']??([^\"\']+)\s*[\"\']??>([^<]+)<\/p:foreach>/is',$str,$matchs);

echo "match all:",htmlspecialchars($matchs[0][0]),"<br/>";

$cnt = count($matchs);

for($i=1;$i<$cnt;$i++){
echo "match $i:",$matchs[$i][0],"<br/>";
}



注意,match all为整个匹配项,因为匹配下来在一个标签内,所以要使用htmlspecialchars函数才能看到源代码,否则只能看到一个333
yzwgh 2008-12-06
  • 打赏
  • 举报
回复
谢谢[昨日如梦],111,222,333只是占位符,它们代表在它们所在位置的任意长度字符串,并不是指数字
penglewen 2008-12-06
  • 打赏
  • 举报
回复
$str = '<p:foreach items="111" var="222">333 </p:foreach>';
preg_match_all('/\d+/',$str,$out);
print_r($out);
yzwgh 2008-12-06
  • 打赏
  • 举报
回复
没有人回答?
yzwgh 2008-12-06
  • 打赏
  • 举报
回复
当然,还包括获取该字符串本身

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧