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

WP mail - Delivery failed: unknown error, how to debug?
Bootstrap modal form replace with JSON
404 Not Found error after commit changes on PHP application Openshift
want to convert my date formate 21/10/60 to 21-10-1960
Difference between sentences of cronjobs
SOLVED - PHP Compare 2 Arrays with time ranges
scandir() scan by increasing number
How to get the ID of all the checked boxes on displayed data base QUICKFIX?
How to fix include_once issues in my code?
Looking to give MailChimp dynamic content?
My image in my database is not posting on my site (PHP MySQL)
CodeIgniter default database driver is mysql instead of mysqli
parse HTML table from third party server (jQuery or PHP)
Php mysql match (multiple) words in multiple columns with spaces
E-Commerce / Cart - Stock
Getting a sub string between two different delimiters

Categories

HOME
cocoapods
user-interface
typelite
freeradius
jms
transactions
systemd
android-emulator
magento-2.0
informatica
flurry
eddystone
fbloginview
game-maker
ex
xbox360
bnf
adminlte
spring-shell
angular2-highcharts
libgit2
social-tables
spring-ldap
anova
hdl
perfino
firemonkey-style
high-availability
fstar
xdebug
marquee
basic-authentication
phpstorm-2016.1
publishing
listjs
xerces-c
orchardcms-1.8
cups
numerics
landscape
stackpanel
nsuserdefaults
jade4j
forms-authentication
mars-simulator
gitolite
iscroll
assemblies
stat
newtons-method
oauth2-playground
icepdf
raytracing
minikube
elasticsearch-aggregation
code-push
destroy
sonarqube5.2
image-registration
hibernate-ogm
spring.net
winmerge
ptvs
emacs25
petsc
oracle-fusion-apps
s-function
clp
livecycle
visual-studio-monaco
wininet
django-testing
ftp-client
node-glob
processor
wepay
webgrind
ajax4jsf
python-cffi
variable-length-array
openshift-cartridge
bjam
wso2ml
darwin
kotlin-android-extensions
fuseesb
rubber
full-text-indexing
sql-view
jquery-transit
void-pointers
dojo-1.9
smartfox
jdom
background-repeat
differentiation
glassfish-esb
net-use
rtd
printqueue
mygeneration
eventaggregator
icon-language
watchpoint
synthesizer

Resources

Encrypt Message