vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Trying to import a txt file into VB (https://vborg.vbsupport.ru/showthread.php?t=324268)

Mickie D 01-23-2017 02:11 PM

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

Dave 01-23-2017 02:22 PM

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.

Mickie D 01-23-2017 02:57 PM

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

Dave 01-23-2017 03:03 PM

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

Something like:
PHP Code:

if(strpos($string'London') === false) {
   
// continue 



Mickie D 01-23-2017 03:12 PM

Quote:

Originally Posted by Dave (Post 2581239)
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); 


Dave 01-23-2017 04:34 PM

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);



Mickie D 01-23-2017 07:07 PM

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

Mickie D 02-09-2017 11:45 AM

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

Dave 02-09-2017 09:05 PM

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.

Mickie D 02-10-2017 03:14 PM

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);




All times are GMT. The time now is 03:51 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01160 seconds
  • Memory Usage 1,781KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (9)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete