ホームページ > バックエンド開発 > PHPチュートリアル > 正規表現に関するアドバイスを引き続き求める

正規表現に関するアドバイスを引き続き求める

WBOY
リリース: 2016-06-23 14:10:13
オリジナル
894 人が閲覧しました

$str = "昨天 @测试 hiaaaa dd@测试 反反复复";$reg = "/([^@]+(?=\s))/";$arr = preg_split($reg,$str,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );print_r($arr);
ログイン後にコピー


結果は
Array ( [0] => 昨天 [1] => @ [2] => 测试 [3] => hiaaaa [4] => dd@ [5] => 测试 [6] => 反反复复 ) 
ログイン後にコピー


望ましい結果は

Array ( [0] => 昨天 @ [1] => 测试 [2] => hiaaaa dd@ [3] => 测试 [4] => 反反复复 ) 
ログイン後にコピー


通常のルールを変更する方法を教えてください

==============
実際には、 microと同じようなことをしたいだけです。ブログの@関数は、@の人を削除するために通常のルールを使用しています。これが当てはまらない場合、他のより良い実装方法はありますか。 ?

これを使用すると、
$str = "昨天 @测试 hiaaaa dd@测试 反反复复@好友2";
ログイン後にコピー
と似ています
このように、@ が最後に来ます。スペースがないかどうかを判断するために正規表現を使用できますか?


ディスカッションに返信 (解決策)

$str = "昨天 @测试 hiaaaa dd@测试 反反复复@好友2";$reg = "/(@\S+)/";$arr = preg_split($reg,$str,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );print_r($arr);
ログイン後にコピー
Array

(
[0] => 昨日
[1] => @test
[2] = > ; hiaaaa dd
[3] =>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート