正则表达式提取字符串部分

时间:2014-05-28 08:37:23

标签: php regex

我有这个字符串:

  

Le serveur aretournéuneerreur“500在执行'select DIVISIONTEST(4,0)from dual'时发生异常:SQLSTATE [HY000]:一般错误:20000 OCIStmtExecute:ORA-20000:Bienessayé!ORA-06512: à“FOO.DIVISIONTEST”,第8行(ext \ pdo_oci \ oci_statement.c:148)“。

我想只显示这一部分:Bien essayé!此部分之前或之后没有任何内容。

此字符串由:

生成
$exception->getMessage()

你能用正则表达式帮我吗? 谢谢你

编辑:抱歉,自定义消息会更改。我应该更准确。我正在寻找一种方法来在ORA-20000:之后和ORA:之后收到消息。 我正在尝试从PL / SQL请求中获取异常。引发的错误是自定义消息

3 个答案:

答案 0 :(得分:3)

因为你只想匹配一个案例,你可以使用:preg_match
请参阅PHP手册:http://ir1.php.net/preg_match

示例:

$subject = $exception->getMessage();
$pattern = '/Bien essayé!/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

答案 1 :(得分:0)

编辑:更改原始帖子后更新:

$re = '/OCIStmtExecute: ORA-[0-9]+: (.+) ORA-[0-9]+:/'; 
$subject = $exception->getMessage();

preg_match($re, $subject, $matches);
print_r($matches);

答案 2 :(得分:-1)

<?php 
if (preg_match("/Bien essayé!/i",$exception->getMessage())
   echo : "Bien essayé!";
else
   echo "Pas bien essayé :-D ";
?>