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

Webhost and Android Studio
Login required in phpdolphin viewing
Unable to access stylesheets in codeigniter
Change total woocomerce order weight
WordPress - request post by url with custom field value
$_SERVER['REQUEST_METHOD']='POST'; not working
CMS suggestion with multi language, and multi admin support
Error when adding FIRST record to table
Apache CURL error SSL: CA certificate set, but certificate verification is disabled
Prevent duplicate records from submitting; PHP & MySQL
How to add some textfield in form register (laravel generator infyom)?
Mysql Select where time difference between columns date
how to display blob as image in php
Looping through level 2 of multidimensional array
SQLSTATE[42000]: Syntax error or access violation: 1064 - refers specifically to word “mcmaster”
Mysql connect in two tables

Categories

HOME
hpoo
nam
automapper
cucumber
adfs3.0
moodle-api
mosquitto
jint
share
video-streaming
openfoam
stored-procedures
phpmqtt
stack-overflow
mpu6050
freertos
outlook-restapi
google-tasks-api
amazon-mws
dashdb
neo4j.rb
stackexchange.redis
qa
amazon-sns
intel
quartz.net
managed-c++
android-cardview
msdeploy
history.js
adapter
amazon-cloudtrail
sparkle
microprocessors
fatfs
locks
es6-modules
infopath2010
mongodb-3.4
winrm
markov-chains
orchardcms-1.8
identify
recovery
rdp
stat
netapp
plane
ejml
raytracing
autorelease
intellij-lombok-plugin
ol3-google-maps
uiautomatorviewer
knockout-2.0
simple-schema
sequence-diagram
google-news
stateless-session-bean
kendo-editor
petsc
bilinear-interpolation
nsrunloop
spring-mongo
perforce-integrate
odp.net-managed
adjacency-list
outlook.com
cryptojs
bayesglm
largenumber
extend
jnlp
wso2ml
domino-designer-eclipse
algebraixlib
componentart
azure-xplat-cli
mgwt
uno
string.format
cakephp-2.2
flurry-analytics
mobile-country-code
loginview
distributed-r
nachos
jmenubar
revmob
postgres-xc
blobstorage
eager-loading
notin
ip-geolocation
struts2-s2hibernate
gamesalad
trialware
kobold2d
directshow.net
simile
servlet-container
ninject-interception
uninstaller
rawcontacts
rtti
index.dat
jboss-mdb
acceleration
remote-working

Resources

Encrypt Message