我有一个像
这样的字符串This is [string] and its [text] and [stuff]
我需要将[]
中的文本转换为像
array('string', 'text', 'stuff');
答案 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);
}
这只是一个考验。它可能有效或无效。是一个例子。