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

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

WBOY
WBOYOriginal
2016-06-13 13:14:34941browse

PHP,我想用正则表达式得到数组(@中肖,@尖,@地s_3法,@在有)这四个数组元素,不包含@空格。
$str = '@中肖 @尖 困@地s_3法 @在有 @ ';
preg_match_all('/@+\s/', $str, $matchs);
想得到@与空格之间的xxx(可为中文与英文,下划线等符号)
我这样写是错了。求大侠帮手。谢谢了!

当然有其他方法可以得到数组(@中肖,@尖,@地s_3法,@在有)也行,求赐教!

------解决方案--------------------
$str = '@中肖 @尖 困@地s_3法 @在有 @ ';
preg_match_all("/@\S{1,}\s/", $str, $matchs);

\S (大写) 表示所有非空白字符, 后跟 {1,} 表示必须至少有一个匹配字节
------解决方案--------------------
我大意了,没有必要再在\S后跟一个\s,这样做反倒画蛇添足
------解决方案--------------------

PHP code
[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);
}
?> <div class="clear">
                 
              
              
        
            </div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn