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

echo php variable string cut off after ampersand
Uploading Images using ios to php
Response method doesnt working properly in php script
Same table, group by type max date, 2 rows difference
i cant fetch the value of $speciality FROM THE TABLE [closed]
Dynamically accessing multidimensional array value
Rewrite url, replace variable with keyword
How can I convert a multidimensional array to a ul list?
How to 301 Redirect old dynamic URLs to their relevant New dynamic URLs in .htaccess
Speed up MsSQL query
How to keep the white space from a TEXT field when fetching [closed]
PHP ceil() and floor() returning float?
OctoberCms component: How to display all ID(items) instead of sorting only one ID?
Sending Emails to Gmail Id with the coordinator go to spam folder
Call to a Member Function getAccessToken() on a non-object
How to one-time authentification for two differents servers?

Categories

HOME
qt
magento2
yahoo-weather-api
opencv-python
workflow
embedded-resource
ios-simulator
android-emulator
web2py
dependencies
linker
position
phpmqtt
tup
migrate
sql-injection
squid
temperature
c#-7.0
web-deployment
gravity
pfobject
jitsi
unity-container
kamailio
data-collection
xdebug
list-comprehension
ibm-connections
fusion
progid
fotorama
microsoft-certifications
db2-luw
transform
jfxtras
wdk
cargo
ms-dos
vb.net-to-c#
secure-coding
viewcontroller
nonlinear-functions
hibernate-ogm
sonatype
datediff
http-basic-authentication
business-rules
email-injection
gawk
qtextedit
haraka
carmen
cdo.message
jtag
maven-release-plugin
piping
ajaxmin
sharepoint-apps
jeasyui
mathnet
distributed-cache
voronoi
ruby-on-rails-4.1
astropy
asp.net-web-api-helppages
sqlbase
featuretoggle
unidata
deque
baseadapter
sunos
windows-rt
storing-data
treeline
fileshare
refit
oxygene
map
strdup
armv6
sensormanager
notin
ntlmv2
smartfox
lynx
towers-of-hanoi
zend-pdf
live-wallpaper
fbml
data-dump
botnet
kohana-auth
anonymous-types
regression-testing
formal-semantics
3-tier
.net-services
jquery-effects
tacit-programming
ntruencrypt
objectinstantiation

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App