|
|
|
| Вся надежда на рег. выражения, но вдруг что :) на всякий случай пишу тут.
Уже голову себе сломал никак не могу придумать как сделать следующее.
Есть строка, скажем: "nickName: 2345sdfgfg325445jdghhdj";
Отсюда нужно получить 2 переменные:
<?
$nick; // в строке "nickName";
$msg; // в строке "2345sdfgfg325445jdghhdj";
|
Далее уже шлём юзеру с ником $nick сообщение.
То есть можно поступить следующим образом:
<?
$txt = "nickName: 2345sdfgfg325445jdghhdj";
preg_match('/^(.+?):\s/', $txt, $whom);
|
Но ник может быть и "nick: Name" - выходит плохо =(
Это так для общего понятия проблемы:)
В общем если есть у кого-то идеи кто сталкивался с таким, возможно при написании чата, будьте добры поделитесь мыслёй :) | |
|
|
|
|
|
|
|
для: sl1p
(16.02.2009 в 23:31)
| | не совсем понял Вашу задачу. Вы хотите просто разделить строку на две части, в роли метки выступает : ? | |
|
|
|
|
|
|
|
для: sl1p
(16.02.2009 в 23:31)
| |
<?
$msg = "Nick: Hello!!!";
$exp = explode(":", $msg);
echo $exp[0]; //Nick
echo $exp[1] // Hello!!!
?>
|
| |
|
|
|
|
|
|
|
для: DEM
(16.02.2009 в 23:38)
| | двоеточие может встречаться и в сообщении, и в нике.
Любой ответ будет неверным. | |
|
|
|
|
автор: Дем (в універе) (17.02.2009 в 12:02) |
|
|
для: Trianon
(17.02.2009 в 00:10)
| |
<?
$msg = "Nick: Hello!!!";
$exp = explode(":", $msg, 2);
echo $exp[0]; //Nick
echo $exp[1] // Hello!!!
?>
|
А если поставитть лимит? Ведь в нике чаще всего запрещают такие символы как : | |
|
|
|
|
|
|
|
для: Дем (в універе)
(17.02.2009 в 12:02)
| | Любой ответ будет неверным. | |
|
|
|
|
|
|
|
для: sl1p
(16.02.2009 в 23:31)
| | для таких целей используют serialize() и unserialize()
или не давайте юзеру писать ":" - или чем Вы там разделяете. | |
|
|
|
|
|
|
|
для: а-я
(17.02.2009 в 00:07)
| | не давайте юзеру писать
это самый последний вариант :)
двоеточие как пример, могут быть абсолютно любые обозначения, главное чтобы всё точно повыдёргивать.. Имхо тут без разницы двоеточие, не двоеточие. | |
|
|
|
|
|
|
|
для: sl1p
(17.02.2009 в 00:51)
| |
<?php
$msg = "Nick: He:llo!!!";
echo substr($msg,0,strpos($msg,':'));
echo substr($msg,strpos($msg,':')+1);
?>
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(17.02.2009 в 01:03)
| |
<?php
$msg = "Nic:k: He:llo!!!";
echo substr($msg,0,strpos($msg,':'));
echo substr($msg,strpos($msg,':')+1);
?>
|
| |
|
|
|
|
|
|
|
для: sl1p
(17.02.2009 в 01:13)
| | Для чего вам нужно получить ник из сообщения? Что вы будете с ним делать? | |
|
|
|
|
|
|
|
для: sl1p
(17.02.2009 в 01:13)
| | нужный разделитель перед пробелом всегда? | |
|
|
|
|
|
|
|
для: MIchail1982
(17.02.2009 в 02:23)
| | Нет :)
Я ж говорю готов выслушать любые предложения, главное чтобы можно было распарсить удачно :)
Вообще логически подумать, так сделать просто невозможно если в имени юзверя любой символ.
Всегда недолюбливал места где запрещают или вырезают какието символы)
А взялся за идею ибо видел не раз в каких-то чатах подобный механизм, хотя до конца его не проверил так как об этом тогда не задумывался :)
Возможно там просто идёт проверка на вхождение ника в сообщение, без всяких баз.. тут только гадать :) | |
|
|
|
|
|
|
|
для: sl1p
(17.02.2009 в 04:21)
| | Если вам нужно просто выделить ник пользователя, если он получает адресованное ему сообщение. То можно обойтись простой заменой.
<?
$msg = str_replace("$nick:", "<b>$nick:</b>", $msg);
|
| |
|
|
|
|
|
|
|
для: sl1p
(17.02.2009 в 04:21)
| | В чатах это реализуют не с ником, а с логином.
На логин накладывают довольно жесткие ограничения. (Что с ним вполне оправданно)
Подсветку ников тоже выполняют, но а) сравнивая ник с каждым из списка находящихся в комнате, и б) обычно на стороне клиента | |
|
|
|
|
|
|
|
для: sl1p
(16.02.2009 в 23:31)
| | я бы разделял эти вещи на самом раннем этапе. Когда всё это ещё не выглядит слитной строкой. ВОобще, думаю надо плясать как раз с начала - там уже и понятно будет что делать. Может есть список пользователей - можно и пробежаться по нему? | |
|
|
|
|
|
|
|
для: Zilog
(17.02.2009 в 01:46)
| | Ну это итак будет проверяться.
Нужно для записи в базу, далее подсветка сообщения юзеру.
До этого юзал просто отдельное поле, но немного не подходит. | |
|
|
|