PHPで、正規表現を使用して、@スペースを含まない4つの配列要素(@中小、@jian、@地s_3法、@在有)を取得したいと考えています。
$str = '@中小@狠狠@地s_3法@在有@ ';
preg_match_all('/@+s/', $str, $matchs);
@を取得したいとスペース 間のxxx (中国語と英語、下線やその他の記号も可)
この書き方は間違っていました。英雄たちに助けを求めます。ありがとう!
もちろん配列を取得する他の方法(@中小、@jian、@地s_3法、@在有)もありますので、アドバイスをお願いします。
-----解決策---------
$str = '@中小@狠狠@地s_3法@在有@ ';
preg_match_all("/@S{1,}s/", $str, $matchs);
S (大文字) は空白以外のすべての文字を意味し、その後に {1,} が続くことは、少なくとも 1 つの一致するバイトが存在する必要があることを意味します
------解決策------------------
不注意でした。S の後に s を付ける必要はありません。
------解決策------------------
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ php main.php 配列 ( [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>