2

ヘッダーからの可能性のある SIP:

"unknown-caller-name" <sip:unknown-ani@pbx.domain.com:5066;user=phone>
"Henry Tirta" <sip:951@domain.com>

正規表現を使用して、php の上記のヘッダーから<sip:&の間の SIP 番号を抽出する必要があります。@この SIP 番号の長さは異なります。

$from = "\"User Name\" <sip:199@pbx.testdomain.com>";
$matches = array();
$pattern = '/[A-Za-z0-9_-]+@[A-Za-z0-9_-]+\.([A-Za-z0-9_-][A-Za-z0-9_]+)/';
preg_match($pattern,$from,$matches);
$number = explode('@', $matches[0])[0];
echo $number;

これを行うためのより良い方法はありますか?

4

3 に答える 3

0

それがより良い方法かどうかはわかりませんが、より短い方法を実行し、正規表現で名前付きグループを使用しました

<?php
$pattern='/^(.*) <sip\:(?P<number>[0-9]+)@(.*)>$/';
$subject='"User Name" <sip:199@pbx.testdomain.com>';
preg_match($pattern,$subject,$matches);
echo $matches["number"];
?>

(.*) の部分を変更することで表現を改善できますが、これに特定のものが必要かどうかはわかりませんでした

これがあなたのお役に立てば幸いです。あなたのコードで頑張ってください

于 2013-07-23T13:11:00.877 に答える
0
$string = '"User Name" <sip:199@pbx.testdomain.com>';

preg_match('/^(?:\"([^\"]+)\" )?\<sip\:(\d+)\@/i', $string, $matches);

// Output
array (size=3)
  0 => string '"User Name" <sip:199@' (length=21)
  1 => string 'User Name' (length=9)
  2 => string '199' (length=3)
于 2013-07-23T13:12:26.297 に答える