从字符串中的括号中获取文本

时间:2014-01-03 12:48:50

标签: php arrays match

我有一个像

这样的字符串
This is [string] and its [text] and [stuff]

我需要将[]中的文本转换为像

这样的数组
array('string', 'text', 'stuff');

3 个答案:

答案 0 :(得分:5)

嵌套括号怎么样?但如果它只是这种简单的格式,你应该用正则表达式得到你需要的东西:

$matches = array()
preg_match_all('/\[([^]]+)]/', $subject, $matches);

$matches是一个包含所有匹配项的多维数组。有关其格式的说明,请参阅preg_match_all的文档。

正则表达式捕获两个括号之间的任何内容,这些括号不是括号并且至少包含一个字符。击穿:

  • \[:一个文字的开头括号
  • (:捕获组的开始
    • [^]]:不是结束括号
    • +:一个或多个
  • ):捕获组结束
  • ]:一个直接的结束括号

答案 1 :(得分:0)

DEMO:https://eval.in/85383
尝试这个:

$p ="/\[.*?\]/s";

$str = ' "This is [string] and its [text] and [stuff]".';

preg_match_all($p,$str,$r);

$re =array();
$arr = array("[","]");
foreach($r[0] as $s){
  $s = str_replace($arr,"'",$s);
  array_push($re,$s );
}
print_r($re);

答案 2 :(得分:-1)

这是子解决方案:

$array = array();
$count = substr_count($myString,'[');
for ($i = 0; $i < $count; $i++){
 $firstOccurenceInit = strpos($myString, '[');
 $firstOccurenceEnd = strpos($myString, ']');
 $array[] = substr($myString,$firstOccurenceInit,$firstOccurenceEnd);
 $myString = substr($myString,$firstOccurenceEnd);
}

这只是一个考验。它可能有效或无效。是一个例子。

相关问题