Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式来提取字符串部分_Php_Regex - Fatal编程技术网

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

Php 正则表达式来提取字符串部分,php,regex,Php,Regex,我有这个字符串: Le serveur a retournéune erreur“500在执行'select DIVISIONTEST(4,0)from dual':SQLSTATE[HY000]:一般错误:20000 OCIStmetExecute:ORA-20000:Bien ATSOURCEé!ORA-06512:a“FOO.DIVISIONTEST”,第8行(ext\pdo_oci\oci_statement.c:148)” 我只想展示这一部分:Bien此部件之前或之后无任何内容 此字符

我有这个字符串:

Le serveur a retournéune erreur“500在执行'select DIVISIONTEST(4,0)from dual':SQLSTATE[HY000]:一般错误:20000 OCIStmetExecute:ORA-20000:Bien ATSOURCEé!ORA-06512:a“FOO.DIVISIONTEST”,第8行(ext\pdo_oci\oci_statement.c:148)”

我只想展示这一部分:
Bien此部件之前或之后无任何内容

此字符串由以下命令生成:

$exception->getMessage()
你能帮我学一下正则表达式吗? 谢谢

编辑:抱歉,自定义消息将更改。我应该更精确一些。我正在寻找一种方法,在下面的
ORA:
之后和
ORA:
之前获取消息。
我试图从PL/SQL请求中获取引发的异常。引发的错误是一条自定义消息

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

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

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

因为您只想匹配一个案例,所以可以使用:
preg\u match

请参阅PHP手册:

例如:

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

谢谢kevinabelita,你在我写这篇文章的5秒钟前编辑了我的文章以后会更改吗?如果只提供一个可能异常字符串的实例,则很难找到一个有效的正则表达式。你能给我们更多的例子说明你需要从哪些类型的异常中提取消息吗?对不起,你是对的。我编辑了我的postAh谢谢,我测试了它,我得到了
警告:preg_match():分隔符不能是字母数字或反斜杠
编辑:它需要反斜杠。但是我的数组是空的。我一直试着写感谢信,但忘了带分隔符。更新。
<?php 
if (preg_match("/Bien essayé!/i",$exception->getMessage())
   echo : "Bien essayé!";
else
   echo "Pas bien essayé :-D ";
?>