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

html form with Php code not executing
Running PHP in browser for fake ip voting? [closed]
codeigniter-restserver: digest auth always returns “invalid credentials”
Constraints versus validation groups in Symfony2
PHP How can I sort results with accumulation in the URL by using GET method
Twitter API loop through result pages
Learning HTML and PHP [duplicate]
Magento - Programmatically create custom product attribute via set up script
Zend 1.12 and IMAP: Create folders fails
Laravel Checking if a Dynamic property is set
How do I create pretty urls on non-index pages?
Multiple Fetching from different rows in one loop in PHP
Prestashop mobile number validation
phpSound - fb sign up/login Issue
Laravel 5 Send Errors to Email
fseek($file, SEEK_END) + fwrite() writing to beginning of file instead of end

Categories

HOME
generics
apple-push-notifications
yaml
facebook-messenger
dotnetnuke
bots
kivy
apk
iverilog
celery
tabs
vue-resource
tibco
gprs
graphql-js
telegraf
roku
google-awareness
spring-jpa
sql-injection
max-msp-jitter
phonegap-build
nullreferenceexception
spam
opam
pe
error-logging
anova
weex
hdl
backtracking
webviewclient
points
code-climate
unmarshalling
vcenter
rails-postgresql
xerces-c
macports
django-crispy-forms
linq.js
game-center
optionaldataexception
nomad
xcglogger
network-protocols
sesame
dex
dynamics-crm-4
cognos-tm1
wildfly-9
ipywidgets
bigdecimal
xcode6.4
fuzzer
nsrunloop
p6spy
eclemma
apache-pig-grunt
uibinder
univocity
stack-smash
nastran
calcite
karma-coverage
artisan
kotlin-android-extensions
mutators
kognitio-wx2
iodocs
utf8-decode
multivariate-testing
xhprof
oracle-adf-mobile
compiler-flags
mousemotionlistener
sql-view
stty
disjoint-union
tnt4j
google-code-prettify
node.js-stream
chefspec
session-0-isolation
handshake
instance-variables
sfinae
coordinate
first-class
flymake
zend-server-ce
rtd
downgrade
urchin
comment-conventions
remote-working
word-automation

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile