我有这个字符串:
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请求中获取异常。引发的错误是自定义消息
答案 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 ";
?>