php - 使用 sscanf 剥离 PHP 中的封装字符

标签 php string scanf

使用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/

相关文章:

php - 通过 PHP 执行的 REGEXP 的奇怪 MySQL 结果集

php - Facebook Graph API PHP 以页面形式对页面上的帖子进行评论

php - Doctrine countDistinct 别名

c - 读取字符时会不会出现编码错误?

php - mysql View 增加 2 而不是 1

java - java中遇到连字符时分割句子

java - 存储 String 对象的最压缩方式

python - 在什么情况下相等的字符串共享相同的引用?

c - Store program.exe 已停止工作,我该如何解决它?

C编程: Input is assigned but output display shows the incorrect value