summaryrefslogtreecommitdiffstats
path: root/xmpp.util.php
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp.util.php')
-rw-r--r--xmpp.util.php69
1 files changed, 69 insertions, 0 deletions
diff --git a/xmpp.util.php b/xmpp.util.php
new file mode 100644
index 0000000..5bde0c0
--- /dev/null
+++ b/xmpp.util.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ * xmpp jid util functions.
+ */
+
+function getJidDomain($jid) {
+ if (null == $jid) {
+ return null;
+ }
+
+ $atIndex = strpos($jid, '@');
+ $slashIndex = strpos($jid, '/');
+
+ if ($slashIndex !== false) {
+ if ($slashIndex > $atIndex) {// 'local@domain.foo/resource' and 'local@domain.foo/res@otherres' case
+ return substr($jid, $atIndex + 1, $slashIndex - $atIndex + 1);
+ } else {// 'domain.foo/res@otherres' case
+ return substr($jid, 0, $slashIndex);
+ }
+ } else {
+ return substr($jid, $atIndex + 1);
+ }
+}
+
+function getJidLocalPart($jid) {
+ if ($jid == null) {
+ return null;
+ }
+
+ $atIndex = strpos($jid, '@');
+ if ($atIndex === false || $atIndex == 0) {
+ return "";
+ }
+
+ $slashIndex = strpos($jid, '/');
+ if ($slashIndex !== false && $slashIndex < $atIndex) {
+ return "";
+ } else {
+ return substr($jid, 0, $atIndex);
+ }
+}
+
+function getBareJid($jid) {
+ if ($jid == null) {
+ return null;
+ }
+
+ $slashIndex = strpos($jid, '/');
+ if ($slashIndex === false) {
+ return $jid;
+ } else if ($slashIndex == 0) {
+ return "";
+ } else {
+ return substr($jid, 0, $slashIndex);
+ }
+}
+
+function getResource($jid) {
+ if ($jid == null) {
+ return null;
+ }
+
+ $slashIndex = strpos($jid, '/');
+ if ($slashIndex + 1 > strlen($jid) || $slashIndex === false) {
+ return "";
+ } else {
+ return substr($jid, $slashIndex + 1);
+ }
+} \ No newline at end of file