Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.php > #12011
| From | Jerry Stuckle <jstucklex@attglobal.net> |
|---|---|
| Newsgroups | comp.lang.php |
| Subject | Re: Regarding split text and match from data base |
| Date | 2013-11-28 19:27 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <l78n12$7d9$1@dont-email.me> (permalink) |
| References | (3 earlier) <b9bfb809-4513-4262-a0c9-65acf113aa43@googlegroups.com> <l7518b$e05$1@dont-email.me> <0.df047f3bb244630b50f4.20131128122727GMT.87k3fs1zkg.fsf@bsb.me.uk> <l77pcm$uih$1@dont-email.me> <0.f78e527401699a6f7ed5.20131128185119GMT.87txewz7fc.fsf@bsb.me.uk> |
On 11/28/2013 1:51 PM, Ben Bacarisse wrote:
> Jerry Stuckle <jstucklex@attglobal.net> writes:
>
>> On 11/28/2013 7:27 AM, Ben Bacarisse wrote:
>>> Jerry Stuckle <jstucklex@attglobal.net> writes:
>>> <snip>
>>>> Here is a better version. It uses a regex to get all of the ip and
>>>> mac addresses in an array, then selects them. I set this up for CLI
>>>> output (for basic testing here), so you'll have to change the display.
>>>> But otherwise it should work with few modifications and correcting for
>>>> the line wrapping as indicated
>>>>
>>>> <?php
>>>>
>>>> $arp = shell_exec('arp -a');
>>>>
>>>> ----
>>>>
>>>> // *1
>>>> $res=preg_match_all('/^\s*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\s+([0-9a-fA-F]{2}\-[0-9a-fA-F]{2}\-[0-9a-fA-F]{2}\-[0-9a-fA-F]{2}\-[0-9a-fA-F]{2}\-[0-9a-fA-F]{2})/m',
>>>> $arp, $matches, PREG_SET_ORDER);
>>>
>>> I'd do this a little differently. I'd use PREG_PATTERN_ORDER so that I
>>> can just loop through $matches[2] without any further subscripting, but
>>> I'd also not capture the IP address since it does not seem to be used.
>>>
>>
>> The OP indicated he wanted to capture the IP address. We don't know
>> what else he may be using it for. And I used PREG_SET_ORDER
>> specifically to keep the IP address with the MAC address.
>
> Without more code it's hard to tell, but for what I was commenting on,
> pattern order looks better. The only advantage of either order is if
> there is some natural operation that can be performed on $matches[i] and
> there is no evidence for that as yet for 'set' order. There is a
> natural operation that is done on all the macs, which it why, on the
> balance of the current evidence, I'd favour pattern order.
>
Yes, it is hard to tell without more code. However, lacking that I
think set order is more appropriate, because the linkage between the ip
and the mac address is maintained.
> <snip>
>>> As a result of changing the capture order, I'd also be tempted to
>>> re-write the loop:
>>>
>>> <snip>
>>>> $macs = ''; // *4
>>>> foreach ($matches as $match) {
>>>> if ($macs != '') // Not the first time through, so
>>>> $macs .= ', '; // Add a separator
>>>> $macs .= '\'' . mysqli_real_escape_string($link, $match[2])
>>>> . '\''; // Append the next MAC address (again all one line above)
>>>> }
>>>
>>> as $macs = "'" . join("', '", $matches[1]) . "'";
>>
>> Which doesn't work when you capture both MAC and IP.
>
> You can if you just write 2 instead of 1, but I suspect that's not what
> you meant. You can't do this if you collect in 'set' order rather than
> 'pattern' order, but even if the IP address is captured there's no clear
> reason to choose set order (so far as we know).
>
No, because your regex did not parse out the ip. And again, pattern
order breaks the linkage between ip and mac address. I chose that
because if the OP wants the ip also, it would not make sense to use it
without the mac address.
>> Additionally,
>> you don't call mysqli_real_escape_string() for the values. Yes, I
>> know it's not actually required here - but it's a good habit for new
>> programmers to get into. It's much better to call it when not needed
>> than to not call it when it is needed.
>
> Well, you can't mean that literally (there are places where it's not
> needed where using it would break the code) but I know what you are
> getting at. Part of the equation should be, in my view, how likely it
> is that the quoting will be needed. Given the context (mac addresses)
> it's not very likely, and I'd take that into account.
>
> <snip>
>
Yes, I do mean that literally. And there is no place where you call it
for strings that will break the code. If there is, I would like you to
show it. mysqli_real_escape_string is about more than quoting.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Regarding split text and match from data base jalaf28@gmail.com - 2013-11-22 03:28 -0800
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-22 09:24 -0500
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-22 16:34 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-22 10:54 -0500
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-22 17:50 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-22 13:57 -0500
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-23 08:52 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-23 07:05 -0500
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-24 17:17 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-24 11:23 -0500
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-24 20:02 -0800
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-24 22:09 -0800
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-24 22:35 -0800
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-25 08:35 +0100
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-25 08:36 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-25 09:31 -0500
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-25 21:32 -0800
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-25 21:41 -0800
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-26 07:20 -0500
Re: Regarding split text and match from data base jalaf28@gmail.com - 2013-11-26 21:22 -0800
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-27 12:29 +0100
Re: Regarding split text and match from data base Arno Welzel <usenet@arnowelzel.de> - 2013-11-27 12:31 +0100
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-27 09:57 -0500
Re: Regarding split text and match from data base Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-11-28 12:27 +0000
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-28 11:01 -0500
Re: Regarding split text and match from data base Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-11-28 18:51 +0000
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-28 19:27 -0500
Re: Regarding split text and match from data base Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-11-29 02:34 +0000
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-28 22:47 -0500
Re: Regarding split text and match from data base Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-11-29 05:01 +0000
Re: Regarding split text and match from data base Jerry Stuckle <jstucklex@attglobal.net> - 2013-11-29 07:40 -0500
Re: Regarding split text and match from data base Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-11-29 13:58 +0000
csiph-web