function recursiveSplit($string, $layer) {
$err = preg_match_all("/\{(([^{}]*|(?R))*)\}/",$string,$matches);
echo "Elementi trovati: $err<br>";
if($err == FALSE) echo "preg_match_all ERROR<br>";
// iterate thru matches and continue recursive split
if (count($matches) > 1) {
for ($i = 0; $i < count($matches[1]); $i++) {
if (is_string($matches[1][$i])) {
if (strlen($matches[1][$i]) > 0) {
echo "<pre>Layer ".$layer.": ".$matches[1][$i]."</pre><br />";
recursiveSplit($matches[1][$i], $layer + 1);
}
}
}
}
}
$buffer = "{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}";
recursiveSplit($buffer, 0);
Run Code Online (Sandbox Code Playgroud)
产量
Elementi trovati:
preg_match_all ERROR
Backtrack limit was exhausted!
Run Code Online (Sandbox Code Playgroud)
此代码给出了PREG_BACKTRACK_LIMIT_ERROR错误...但回溯限制设置为100.000.000.
这是我第一次使用正则表达式,我真的不知道如何解决它.
非常感谢,Marco
今天我想尝试将我的项目从visual c ++ 2010带到visual c ++ 2013.
我在visual c ++ 2013中遇到了这个错误,这是我在编译2010版时没有得到的.
//somewhere in the SimpleObject_list class
std::unordered_map<std::string, SimpleObject *> Object_list;
//method which is giving me the error
void SimpleObject_list::Add(const char *Object_name, SimpleObject * Object_pointer){
cout << "SimpleObject listed as: " << Object_name << endl;
Object_list.insert(std::make_pair<std::string,SimpleObject *>(Object_name, Object_pointer));
}
Run Code Online (Sandbox Code Playgroud)
错误是:
error C2664: 'std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,SimpleObject *> std::make_pair<std::string,SimpleObject*>(_Ty1 &&,_Ty2 &&)' : cannot convert argument 2 from 'SimpleObject *' to 'SimpleObject *&&'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?为什么我在vc ++ 2010中没有出现任何错误?
谢谢