php


Creating folders based on posted hashtags PHP


So this is my first time posting a question on this website and as a programmer I'm ashamed I didn't create an account sooner, this website has gotten me through a lot lol, anyways enough about that, I need some help.
I am creating a system where users can post their own little statuses, update their status, share, etc. I need help creating folders for #hashtags based on the hashtag the user has in his posted status.
So an example would be: "Hello world #firstpost #helloworld", the code would have to exclude everything in that sentence except for any and all hashtags, and it would then create the folders for all the hashtags that are in the users post, in this case it's going to create the folders firstpost and helloworld (if they don't already exist).
Can I create the folders using a modified version of this or at least something better/similar/related?
$foldername = $_POST["status_posting"];
mkdir('../hashtag/' . $foldername, 0755);
for ($i = 0; $i < 1; $i++) {
mkdir('../users/' . $foldername, 0755);
}
Thank you for your guys help in advance.
You can use a regular expression to capture the hashtags, then use mkdir() to create the directories. You can use file_exists() to check if a file exists (or not !).
I would use the following expression: #(\S{1,}). This expression looks for a #, then starts capturing any non white-space character (/S), from once to infinite times ({1,}).
<?php
$input = "Hello world #firstpost #helloworld";
preg_match_all("/#(\S{1,})/", $input, $matches);
foreach($matches[1] as $match){
if (!file_exists('../hashtag/' . $match)) {
mkdir('../hashtag/' . $match, 0755, true);
}
}
I'd php explode() the message, check each item if it contains a #, if so mkdir the item's name minus the #. Possibly not the most efficient way to do it.
$foldername = explode(" ", $_POST["status_posting"]);
foreach($foldername as $string){
if(strpos($string, '#') !== FALSE){
//Make dir!
mkdir('../hashtag/' . ltrim($string, "#"), 0755, true);
}
}
The true at the end of mkdir allows for recursive file path creation. For instance, if the hashtag folder has not been created yet, it will create that too.
After doing some research, since "#" can be found without using regex, it's much more efficient to use strpos() and explode(). preg_match() vs strpos() speed is shown below.
no. strings 1 2 3 10 100 1000 10000
strpos() 0.01 ms 0.02 ms 0.04 ms 0.2 ms 0.9 ms 2.6 ms 25.6 ms
preg_match() 0.2 ms 0.2 ms 0.3 ms 0.47 ms 0.95 ms 7.4 ms 72.2 ms
Though you do have to factor in explode() time, the php forum states that explode() should be used when regex power is not required, for reasons we can see above. I would be interested in seeing the two answers code put head to head as it would be quite interesting to know for sure.

Related Links

Regex to replace double with single quotes if at beginning and end of matching string
Generating vouchers using md5?
Xpath Exclude p.class of a div
SOAP call variable with sigle quote
Redirect to page but keep original URL using htaccess
ZF2 PostgreSQL db adapter bug
php multiple keyword search
Empty array not appearing in $_POST
Is there any way to prevent Woocommerce from defaulting to one particular (local pickup) shipping method?
ZF 1.12: Zend_Session::start() exception
Cake php Missing helper, working on local but not on remote
RewriteRule to redirect whole domain to get parameter
php pdo array select preprepared statement with LIKE, IN, etc
Highrise Custom Fields
What could be causing this PHP page to work normally in WAMPServer, but not on a web server?
Laravel 4.2 query error - Cannot execute queries while other unbuffered queries are active

Categories

HOME
automapper
blast
bokeh
kendo-dropdown
loopbackjs
dafny
javafx-8
cisco
xamarin-zebble
cqrs
jquery-file-upload
distributed-computing
heap-dump
pinterest
scheduled-tasks
qa
eclipse-emf
cell
openbravo
jackrabbit-oak
django-import-export
credit-card
tilemill
progid
caesar-cipher
xerces-c
wdk
subclassing
unification
aurelia-http-client
recovery
slideshow
grails-spring-security
hypothesis-test
fluid-mac-app-engine
transparency
asihttprequest
destroy
.net-micro-framework
django-static-precompiler
gestures
redisson
entropy
embedded-v8
rcharts
hmmlearn
gawk
nsrunloop
visual-studio-monaco
qtcpsocket
fiber
gnucash
as3-api
univocity
voronoi
lovefield
karma-coverage
artisan
com0com
physicsjs
wicked-gem
jolie
operands
adwords-apiv201402
distributed-r
csslint
wso2bam
jack
ivalueconverter
windows-taskbar
django-facebook
semicolon
reentrancy
xmlwriter
android-dialog
getproperty
sfinae
zotonic
sigar
delphi-prism
haiku
radscheduler
botnet
azure-acs
explicit
icicles
accumulator
error-detection

Resources

Encrypt Message