PHP,我想用正则表达式得到数组(@中肖,@尖,@地s_3法,@在有)这四个数组元素,不包含@空格。

zzp503b 2012-09-05 11:37:27
$str = '@中肖 @尖 困@地s_3法 @在有 @ ';
preg_match_all('/@+\s/', $str, $matchs);
想得到@与空格之间的xxx(可为中文与英文,下划线等符号)
我这样写是错了。求大侠帮手。谢谢了!

当然有其他方法可以得到数组(@中肖,@尖,@地s_3法,@在有)也行,求赐教!
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-09-06
  • 打赏
  • 举报
回复
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ php main.php 
Array
(
[0] => @中肖
[1] => @尖
[2] => @地s_3法
[3] => @在有
)
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ cat main.php
<?php
$content = "@中肖 @尖 困@地s_3法 @在有 @ ";
$n_match = preg_match_all('/@.* /U', $content, $matches);
if ($n_match) {
$res = array_filter($matches[0], function($item){return trim($item, "@ ");});
print_r($res);
}
?>
改一下昵称 2012-09-06
  • 打赏
  • 举报
回复
我大意了,没有必要再在\S后跟一个\s,这样做反倒画蛇添足
改一下昵称 2012-09-06
  • 打赏
  • 举报
回复
$str = '@中肖 @尖 困@地s_3法 @在有 @ ';
preg_match_all("/@\S{1,}\s/", $str, $matchs);

\S (大写) 表示所有非空白字符, 后跟 {1,} 表示必须至少有一个匹配字节
zzp503b 2012-09-06
  • 打赏
  • 举报
回复
$str = "@中肖 @尖 困@地s_3法 @在有 @ ";
preg_match_all('/@\S{1,}/', $str, $matchs);

for ($i = 0; $i < count($matchs[0]); $i++) {
echo "[".$i."] => ".$matchs[0][$i]."<br />";
}
感谢谢楼上二位的帮助!
qq120848369
$res = array_filter($matches[0], function($item){return trim($item, "@ ");});
这句运行的时候出错了。

谢谢dream1206的回答与分析!

21,886

社区成员

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

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