从PHP字符串中剥离字符

时间:2015-01-09 03:43:35

标签: php string

我有这个字符串:

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传递到我的脚本。

1 个答案:

答案 0 :(得分:1)

使用带有ms修饰符的正则表达式,以便您可以匹配换行符:

<?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;
?>