Jump to content

copy and paste a html table to PHP


unistake
Go to solution Solved by Psycho,

Recommended Posts

Hi guys, 

 

I am trying to find a way for a website user to copy a standard html table from a website and paste it in to a form on my website, which would then upload it to php to a mysql db. 

 

The table they would copy follows the same format however the fields could sometimes have either or numberical or characters as values. 

 

An example of a table I would be trying to upload to my DB is this: 

 

"Date Duty Dep Begin End Arr

1 Apr 14, Wed 7743 HME 04:40 Z 06:20 Z AWY
1 Apr 14, Wed 6473 AWY 06:45 Z 08:55 Z FRG
1 Apr 14, Wed 1231 FRG 09:20 Z 11:25 Z AWY
1 Apr 14, Wed 2222 AWY 11:50 Z 13:25 Z HME
2 Apr 14, Tue STDY0300-Z HME 03:00 Z 15:00 Z
3 Apr 14, Thu 6666 HME 05:00 Z 06:05 Z WAG
3 Apr 14, Thu 5555 WAG 06:30 Z 07:40 Z HME
3 Apr 14, Thu 2222 HME 08:05 Z 10:50 Z NWR
3 Apr 14, Thu 1111 NWR 11:15 Z 13:50 Z HME
4 Apr 14, Fri 4444 HME 04:15 Z 07:05 Z CKC
4 Apr 14, Fri 2222 CKC 07:45 Z 10:15 Z HME"
 
Does anyone know the best way to try and separate the columns in each row to process with PHP? 
 
Thanks, 
 
 
 
Link to comment
Share on other sites

  • Solution

Well, let's step back a second. By copying and pasting the table you are talking about the output of the table and not the source code, right? Since the output is being copied onto the user's clipboard, I can't guarantee that the "copied" output would always be exactly the same based upon browser or, especially, operating system. A MAC may copy the content much differently than a PC.

 

However, based upon the example you have posted, the output was simply adding a space between each cell. So, the problem here is you need to differentiate between spaces that exist within the data field and the spaces that delineate the different pieces of data. If the data will always be in the same format then you can do it be creating the rules on processing the data.

 

Based on what I see, every line will have the same number of spaces (i.e. there are no fields where some values have more or less spaces than other values in the same column). So, the easiest solution, IMO, is to simply explode the lines and then use the parts you want.

 

Here is some sample code with absolutely no verification that this will work for all possibilities

 

$lines = explode("\n", $_POST['input']);
foreach($lines as $line)
{
    if(substr($line, 0, 4)=='Date')
    {
        //Skip header line
        continue;
    }
    $parts = explode(' ', $line);
    $date = $parts[1] . ' ' . $parts[0] . ', 20' . trim($parts[2], ',');
    $duty = $parts[4];
    $dep = $parts[5];
    $begin = $parts[6];
    $end = $parts[8];
    $arr = $parts[10];

    echo "Date: {$date}<br>\n";
    echo "Duty: {$duty}<br>\n";
    echo "Dep: {$dep}<br>\n";
    echo "Begin: {$begin}<br>\n";
    echo "End: {$end}<br>\n";
    echo "Arr: {$arr}<br><br>\n";
}

 

Part of the sample output

 

Date: Apr 1, 2014
Duty: 7743
Dep: HME
Begin: 04:40
End: 06:20
Arr: AWY

Date: Apr 1, 2014
Duty: 6473
Dep: AWY
Begin: 06:45
End: 08:55
Arr: FRG

Date: Apr 1, 2014
Duty: 1231
Dep: FRG
Begin: 09:20
End: 11:25
Arr: AWY
 
. . .
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.