[英]regex to extract string part
我有這個字符串:
為您提供一條錯誤的消息“ 500從雙執行'select DIVISIONTEST(4,0)”時發生異常: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請求中引發異常。 引發的錯誤是自定義消息
好吧,因為您只想匹配一種情況,所以可以使用: 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);
編輯:原始帖子更改后更新:
$re = '/OCIStmtExecute: ORA-[0-9]+: (.+) ORA-[0-9]+:/';
$subject = $exception->getMessage();
preg_match($re, $subject, $matches);
print_r($matches);
<?php
if (preg_match("/Bien essayé!/i",$exception->getMessage())
echo : "Bien essayé!";
else
echo "Pas bien essayé :-D ";
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.