Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 01-23-2017, 02:11 PM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Trying to import a txt file into VB

Hi guys,

I have a text file that I am trying to import into vbulletin to display

I have managed to make the backend that actually puts the information into vbulletin (my template).

But I am having problem with the PREG match and the output

basically the txt files I am using have allot of crap in them and I am trying to weed out the good bits

Example of text file
Code:
Anson Road, London, N7 0AA
Anson Road, London, N7 0AB
Huddleston Road, London, N7 0AD
Huddleston Road, London, N7 0AE
London, N7 0AF (No Longer In Use)
Huddleston Road, London, N7 0AG
St Georges Avenue, London, N7 0AH
St Georges Avenue, London, N7 0AJ
Archibald Road, London, N7 0AL
Archibald Road, London, N7 0AN
Huddleston Road, London, N7 0AP
London, N7 0AQ (No Longer In Use)
Anson Road, London, N7 0AR
Anson Road, London, N7 0AS
Anson Road, London, N7 0AT
Anson Road, London, N7 0AU
London, N7 0AW (No Longer In Use)
Anson Road, London, N7 0AX
London, N7 0AY (No Longer In Use)
London, N7 0AZ (No Longer In Use)
London, N7 0BA (No Longer In Use)
London, N7 0BB (No Longer In Use)
Rowstock Gardens, London, N7 0BD
Rowstock Gardens, London, N7 0BE
Holbrooke Court, London, N7 0BF
Rowstock Gardens, London, N7 0BG
Rowstock Gardens, London, N7 0BH
using preg match I just want to grab the road names, without the London and the postcodes (N7 OBH)

So I would like the preg replace to cycle each line and remove everything that is not a road name.

LEAVING THIS:

Code:
Anson Road
Rowstock Gardens
Holbrooke
St Georges Avenue

being completely honest I do not even know where to start with preg replace I am losing my mind here

Cheers All

Mick
Reply With Quote
  #2  
Old 01-23-2017, 02:22 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What does the PHP code look like now?
You don't really need a preg_replace for this though, you can just iterate through each line, explode on comma's, then grab the first result.
Reply With Quote
Благодарность от:
Mickie D
  #3  
Old 01-23-2017, 02:57 PM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Dave thank you for that.

but then I would have loads of London, would it be possible to have a stop word like London

IE
if line starts with london - skip line???

I will post the code in the next hour once back in front of my main pc Dave...

Thanks Dave
Reply With Quote
  #4  
Old 01-23-2017, 03:03 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, using the strpos function you can check whether it contains the string London.

Something like:
PHP Code:
if(strpos($string'London') === false) {
   
// continue 

Reply With Quote
  #5  
Old 01-23-2017, 03:12 PM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dave View Post
Yes, using the strpos function you can check whether it contains the string London.

Something like:
PHP Code:
if(strpos($string'London') === false) {
   
// continue 

Thanks Dave at the moment I have this code.

PHP Code:
$roadfile fopen("road.txt""r") or die("Unable to open file!");

$output fread($roadfile,filesize("road.txt"));

//preg replace code to go here:
//$output = preg_replace('London', '', $output);

fclose($roadfile); 
So I am thinking with your code it will be

PHP Code:
$roadfile fopen("road.txt""r") or die("Unable to open file!");

$output fread($roadfile,filesize("road.txt"));

//preg replace code to go here:
//$output = preg_replace('London', '', $output);

if(strpos($output'London') === false) { 
   
// continue  
  //explode lines and stop on comma


fclose($roadfile); 
Reply With Quote
  #6  
Old 01-23-2017, 04:34 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Something like this should work:

PHP Code:
$handle fopen("road.txt""r");
if (
$handle) {
    while ((
$line fgets($handle)) !== false) {

        
$t explode(","$line);
        if(isset(
$t[0]) && strpos($t[0], "London") === false){

            
$road trim($t[0]);

            
// Use $road.

        
}
    }
    
fclose($handle);

Reply With Quote
2 благодарности(ей) от:
MarkFL, Mickie D
  #7  
Old 01-23-2017, 07:07 PM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Dave for all your help mate.

I will get this code tested tomorrow when I am back on my work PC.

Will report back then, thank you very much.

Mick
Reply With Quote
Благодарность от:
MarkFL
  #8  
Old 02-09-2017, 11:45 AM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Dave,

Sorry for the delay, I had a family emergency.

I am getting no output when using the code you posted

Here is how I am using the code
PHP Code:
// ########################## START MICKS PLUGIN PROTECTION ############################
if (!in_array($vbulletin->userinfo['userid'], array(1)))  

// if($vbulletin->userinfo['usergroupid'] != 6)
{
     
print_no_permission();
}else{


// ######################### START PLUGIN  #############################################
$handle fopen("./streetview/n7.txt""r");
if (
$handle) {
    while ((
$line fgets($handle)) !== false) {

        
$t explode(","$line);
        if(isset(
$t[0]) && strpos($t[0], "London") === false){

            
$road trim($t[0]);

        
$sv $road;    // Use $road.

        
}
    }
    
fclose($handle);
}  

}



// ###### Register Variables #######
vB_Template::preRegister('streetview',array('sv' => $sv)); 
And in the template I am using the following to call the output

PHP Code:
{vb:raw sv
Thanks Dave
Reply With Quote
  #9  
Old 02-09-2017, 09:05 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In which hook did you add the code?

Also what you're doing now will keep overwriting the $sv variable, you'll want to add it to an array and then you can iterate through the array in the template.
Reply With Quote
Благодарность от:
Mickie D
  #10  
Old 02-10-2017, 03:14 PM
Mickie D Mickie D is offline
 
Join Date: Jun 2002
Posts: 430
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Dave,

No hook, it's an actual php page I made for vbulletin that has a template associated.

I will create an array and post back,

Thank you Dave.

--------------- Added [DATE]1486753631[/DATE] at [TIME]1486753631[/TIME] ---------------

Hi Dave,

I put road into a foreach array, but its still not giving me any luck.

PHP Code:
$handle fopen("./streetview/n7.txt""r");
if (
$handle) {
    while ((
$line fgets($handle)) !== false) {

        
$t explode(","$line);
        if(isset(
$t[0]) && strpos($t[0], "London") === false){

            
$road trim($t[0]);
            
            foreach(
$road as $svp){
             
$sv $svp;   
            }

        
// Use $road.

        
}
    }
    
fclose($handle);
}  


let me know what you think, and thank you

Mick

--------------- Added [DATE]1486828541[/DATE] at [TIME]1486828541[/TIME] ---------------

I managed to get it working, i went around the houses a little to get it into a comma seperated list - then used the unique array to clean duplicates. I AM SURE lol it could of been done much easier lol

I always forget you need to .= to itterate the arrays

but it works, if anyone wants it

PHP Code:
$handle fopen("./streetview/n7.txt""r");

while(
$row fgets($handle)) {
        list(
$road) = explode","$row );

if(isset(
$road) && strpos($road"London") === false){
  
$svp .=  $road ', ';
  
$sv implode(','array_unique(explode(','$svp)));

  }

}
fclose($handle);

Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:09 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.13511 seconds
  • Memory Usage 2,296KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (9)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (5)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete