如何在包含冒号(:)的php中获取单词?

Dev*_*per 4 php regex search preg-match

我有一个词Hello How are you :chinu i am :good我想得到包含:喜欢:chinu和的词:good

我的代码:

<?php
  //$string='Hello How are you :chinu i am :good';
  //echo strtok($string, ':');  

  $string='Hello How are you :chinu i am :good';
  preg_match('/:([:^]*)/', $string, $matches);
  print_r($matches);
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码我得到Array ( [0] => : [1] => )但没有得到确切的文字.请帮我.

谢谢Chinu

vks*_*vks 6

:\S+
Run Code Online (Sandbox Code Playgroud)

试试这个.看看演示.

http://regex101.com/r/tF5fT5/43

$re = "/:\\S+/im";
$str = "Hello How are you :chinu i am :good";

preg_match_all($re, $str, $matches);
Run Code Online (Sandbox Code Playgroud)


hwn*_*wnd 6

要获得所有匹配,您需要使用preg_match_all().至于你的正则表达式,你的否定课程是倒退的; 匹配任何字符::,^"零或更多"次,并且不符合您的期望.

您在评论中说明了两次打印"记录",这是因为您打印$matches数组本身而不是打印仅显示匹配结果的组索引.

preg_match_all('/:\S+/', $string, $matches);
print_r($matches[0]);
Run Code Online (Sandbox Code Playgroud)