Re: Regarding split text and match from data base [message #183872 is a reply to message #183861] |
Sat, 23 November 2013 07:52 |
Arno Welzel
Messages: 317 Registered: October 2011
Karma:
|
Senior Member |
|
|
Jerry Stuckle, 2013-11-22 19:57:
> On 11/22/2013 11:50 AM, Arno Welzel wrote:
>> Jerry Stuckle, 2013-11-22 16:54:
>>
>>> On 11/22/2013 10:34 AM, Arno Welzel wrote:
>>>> Am 22.11.2013 12:28, schrieb jalaf28(at)gmail(dot)com:
>>>>
>>>> > Hello All I just start learning PHP and i am using 5.4.16 i just
>>>> > want to split the out put of the following and match from the
>>>> > database and print the System name.
>>>> >
>>>> > here is the Code
>>>> >
>>>> > <?php
>>>> >
>>>> > ob_start(); $line=shell_exec("arp -a"); echo "<pre>; echo $line; echo
>>>> > "</pre>";
>>>> >
>>>> > ?>
>>>> >
>>>> > It shows the output of the command "arp -a" and show the Ip address
>>>> > and Mac address on the LAN system. i saved the name and the Mac
>>>> > address in the database. now i want to extaxct the command output and
>>>> > match ["MAc address] with database and show the Particular system
>>>> > name and Ip Address. i try google but not sufficent.
>>>>
>>>> You can try explode() using space (' ') as delimiter, see:
>>>>
>>>> <http://php.net/manual/en/function.explode.php>
>>>>
>>>>
>>>>
>>>
>>> Arno,
>>>
>>> Have you actually looked at the output of arp -a? From your response, I
>>> don't think so.
>>
>> And where is your answer to the question?
>>
>> Anyway...
>>
>> arp -a outputs here (numbers as "x" for privacy reasons):
>>
>> somename (xxx.xxx.xxx.xxx) at xx:xx:xx:xx:xx:xx [ether] on eth0
>>
>> So - using explode() on this line with space as delimiter should return
>> an array with the following elements:
>>
>> somename
>> (xxx.xxx.xxx.xxx)
>> at
>> xx:xx:xx:xx:xx:xx
>> [ether]
>> on
>> eth0
>>
>> Then you can use the fourth element which contains the MAC address.
>>
>> If you get more than one line of output, the lines have to be split
>> first of course. Therefore I'd recommend using exec() which will return
>> the output as an array with one element for each line of output.
>>
>>
>>
>
> My reply is above - if you bothered to read (which you obviously
> didn't). Additionally, the output of arp -a is also dependent on the
> operating system and version of arp. Your way requires much more
> processing than a simple preg_match().
Yep - I didn't see your other post when I wrote my reply.
And yes, I'm also aware that the output of arp -a depends on the
operating system version. That's why I said - "You can try explode()"
and not "use explode() this will always work". Of course I haven taken
into account that the output format is not the same on all operating
systems.
> And in this case the regex is pretty simple, and parses the output he
> wants into a multi-dimensional array in one statement.
Sury - regex is pretty simple assuming the OP knows how to use regular
expressions ;-)
But even then additional parsing may be neccessary if arp groups
interfaces and outputs the interface description first and then a list
of entries for that interface like Windows 7 does.
Again - that's why I said "You can try explode()" - it was only a
suggestion, not a complete solution. But preg_metch() is neither.
--
Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de
|
|
|