我有这个字符串:
An error page was displayed to the Web Services user.\nDetails: The Status you have chosen is invalid.\n\nStack Trace: Stack trace:
字符串本身实际上会继续播放另外约1000个字符。我想要做的是提取Details:
和\n\Stack
之间的内容。我最终得到The Status you have chosen is invalid.
我想我使用substr
删除了前面的字符:
<?php
$error = "An error page was displayed to the Web Services user.\nDetails: The Status you have chosen is invalid.\n\nStack Trace: Stack trace:.........";
$error2 = substr($error, 63);
echo $error2;
?>
但我总是收到错误syntax error, unexpected end of file
。我发现它是引发该错误的\n
和\n\
,但我无法控制这些错误,因为它们从外部API调用返回到我的脚本。我仅在此处定义$error
用于说明目的。即使我只是回复$error
而不只是$error2
。
我已经看到我可以为$short = substr($str, 0, strpos( $str, ' - Name:'));
执行类似删除尾随字符的操作,但我需要先完成前面的操作才能执行此操作。
任何建议表示赞赏!
编辑:我在评论中提到了这一点,但错误字符串由$error = $e->getMessage();
从API传递到我的脚本。
答案 0 :(得分:1)
使用带有m
和s
修饰符的正则表达式,以便您可以匹配换行符:
<?php
$error = "An error page was displayed to the Web Services user.\nDetails: The Status you have chosen is invalid.\n\nStack Trace: Stack trace:.........";
$result = preg_match("/^.*Details:\s(.*?)\n*Stack/ms", $error, $matches);
$errora = $matches[1];
echo $errora;
?>