使用PHP调用Java应用程序,Java应用程序返回一个由“[....]”封装的字符串,我需要删除外面的括号并保留里面的内容 - 整数,字符串和其他特殊的混合像 ( 等字符。我在稍后的过程中成功使用了 sscanf,所以我有点迷失为什么这个特定的步骤如此困难。
输入:
$str = [(123)[334.5 : 765.1] string]
非功能代码:
$format = '[%s]';
sscanf($str,$format,$output);
在此过程的后期,我成功地使用 sscanf 来解析内部字符串:
$format = '(%d) [%f : %f] %s';
我在这里错过了一些大事......
最佳答案
假设字符串总是包含在[...]中,并且您不需要检查格式不正确的字符串,您可以简单地删除第一个和最后一个字符:
$str = substr($str, 1, -1);
编辑:这比使用trim()和 friend 更可靠,因为ltrim/rtrim将删除所有前导/尾随方括号,而不仅仅是第一个和最后一个。如果您的字符串包含类似“[[value]..]”的内容,这可能会成为问题 - 您将留下“value]..”。
另一个编辑:如果您确实需要检查字符串的格式是否正确,很容易验证第一个和最后一个字符是否为方括号:
if ((substr($str, 0, 1) == '[') && (substr($str, -1) == ']')) {
$str = substr($str, 1, -1);
} else {
//Something went wrong - the string is not wrapped in [brackets].
}
关于php - 使用 sscanf 剥离 PHP 中的封装字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006615/