Magestickown Posted October 5, 2012 Share Posted October 5, 2012 Hello! I made a function to split an IRC message into its: prefix, command, arguments and trailing data. It works, mostly, except if I add a string that I'm exploding into the trailing data, it will attempt to explode that, instead of the first instance. Like this: public function parse_message($str) { $array = explode(' ', $str); $username = substr($array[0], 1); $username = explode('!', $username); $username = isset($username[0]) ? $username[0] : ''; $command = isset($array[1]) ? $array[1] : ''; $args = ''; $count = count($array); for($i = 2; $i < $count; $i++) $args .= $array[$i] . ' '; $args = explode(' :', $args); $trailing = isset($args[1]) ? $args[1] : ''; $args = isset($args[0]) ? $args[0] : ''; //:[email protected] PRIVMSG #balls :wah return array('username' => $username, 'command' => $command, 'args' => $args, 'trail' => $trailing); } //:[email protected] PRIVMSG #balls :!eval $this->chat("QUIT :Goodbye."); //"QUIT :Goodbye" makes it only split up to there. It should get everything after #balls :, which it does, but if I add an extra " :", it will only get the first index of the array. Also, if someone could maybe find a better way to do this, that'd be great Link to comment https://forums.phpfreaks.com/topic/269141-how-could-i-go-about-splitting-this-string-properly/ Share on other sites More sharing options...
Christian F. Posted October 6, 2012 Share Posted October 6, 2012 There is a better way to do this, and it's called Regular Expressions. You can learn everything you need to know about this on regular-expressions.info. Link to comment https://forums.phpfreaks.com/topic/269141-how-could-i-go-about-splitting-this-string-properly/#findComment-1383117 Share on other sites More sharing options...
Magestickown Posted October 6, 2012 Author Share Posted October 6, 2012 There is a better way to do this, and it's called Regular Expressions. You can learn everything you need to know about this on regular-expressions.info. Haha yeah... I understand regex, but only the basics. Either way, I got it working great now Thanks anyway. public function parse_message($str) { $arguments = explode(' ', $str); $count = count($arguments); $username = explode('!', substr($arguments[0], 1)); $username = isset($username[0]) ? $username[0] : ''; $command = isset($arguments[1]) ? $arguments[1] : ''; $args = ""; for($i = 2; $i < $count; $i++) $args .= $arguments[$i] . ' '; $trailing_data = stripos($str, ' :'); $trailing_data = trim(substr($str, $trailing_data + 2)); return array('username' => $username, 'command' => $command, 'trail' => $trailing_data, 'args' => $args); } Link to comment https://forums.phpfreaks.com/topic/269141-how-could-i-go-about-splitting-this-string-properly/#findComment-1383119 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.