Php 基于发布的hashtags创建文件夹

Php 基于发布的hashtags创建文件夹,php,Php,所以这是我第一次在这个网站上发布问题,作为一个程序员,我很惭愧我没有尽快创建一个帐户,这个网站让我经历了很多lol,不管怎样,我需要一些帮助 我正在创建一个系统,用户可以发布他们自己的小状态、更新他们的状态、共享等。我需要帮助根据用户在其发布状态下的标签为#标签创建文件夹 例如:“Hello world#firstpost#helloworld”,代码必须排除句子中除任何和所有hashtag之外的所有内容,然后为用户帖子中的所有hashtag创建文件夹,在本例中,它将创建文件夹firstpost

所以这是我第一次在这个网站上发布问题,作为一个程序员,我很惭愧我没有尽快创建一个帐户,这个网站让我经历了很多lol,不管怎样,我需要一些帮助

我正在创建一个系统,用户可以发布他们自己的小状态、更新他们的状态、共享等。我需要帮助根据用户在其发布状态下的标签为#标签创建文件夹

例如:“Hello world#firstpost#helloworld”,代码必须排除句子中除任何和所有hashtag之外的所有内容,然后为用户帖子中的所有hashtag创建文件夹,在本例中,它将创建文件夹firstposthelloworld(如果它们还不存在的话)

我是否可以使用此文件的修改版本或至少更好/类似/相关的文件创建文件夹

$foldername = $_POST["status_posting"];
mkdir('../hashtag/' . $foldername, 0755);
for ($i = 0; $i < 1; $i++) {
    mkdir('../users/' . $foldername, 0755);
}
$foldername=$_POST[“状态_posting”];
mkdir('../hashtag/'.$foldername,0755);
对于($i=0;$i<1;$i++){
mkdir('../users/'.$foldername,0755);
}

提前感谢您的帮助。

您可以使用正则表达式捕获哈希标记,然后使用
mkdir()
创建目录。您可以使用
文件\u exists()
检查文件是否存在(或不存在

我将使用以下表达式:
#(\S{1,})
。此表达式查找一个
#
,然后开始捕获任何非空白字符(
/S
),从一次到无限次(
{1,}

我想
php explode()
在消息中,检查每个项目是否包含
,如果是,则检查项目名称减去
。可能不是最有效的方法

$foldername = explode(" ", $_POST["status_posting"]);
foreach($foldername as $string){
  if(strpos($string, '#') !== FALSE){
    //Make dir!
    mkdir('../hashtag/' . ltrim($string, "#"), 0755, true);
  }
}
mkdir末尾的
true
允许递归文件路径创建。例如,如果hashtag文件夹尚未创建,它也将创建该文件夹

在做了一些研究之后,由于可以在不使用正则表达式的情况下找到“#”,因此使用
strpos()和explode()
更有效<代码>预匹配()vs strpos()
速度如下所示

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

虽然您必须考虑explode()时间,但php论坛指出,在不需要regex power时,应该使用explode(),原因我们可以在上面看到。我很想看到这两个答案代码对头,因为这肯定很有意思。

这是否也会删除“#”,或者您是否需要str替换?您可以使用
#(\S{1,})
仅捕获单词,然后
$matches[1]
从数组中获取它们。我会把它们都写在我的答案中。太棒了,第二个是我认为如果不是每个人都会寻找的话,最重要的。非常感谢丹尼尔,我已经接受了你的回答。你最好把每个问题都放在手边。你可以提出一个新问题。我现在意识到你的问题的目的,而你的想法是错误的。您应该使用.htaccess并通过一个中心文件(hashtag是action,firstpost是数据)路由请求,然后在那里处理它们。如果你想深入研究,不妨使用某种MVC框架。我回答了自己的问题。感谢您的帮助。
explode()
需要两个参数@Daniel抱歉,编辑了它,漏掉了放置炸药的空间(:我还认为使用
explode()
然后使用
strpos()
而不是Regex
strpos()
vs
preg\u match()更快)
与另一种情况有关。例如,使用它们来查找字符串中的特定单词。我毫不怀疑
分解()
strpos()
可能比
preg_match()
更快,但这可以忽略不计。此外,OP没有对性能表示任何担忧(远小于毫秒差异)。@Daniel虽然海报上可能没有,但将来会有其他用户访问此帖子,他们可能会关心性能。我只是提供了一个替代选项,对于需要处理大量数据的某些用例可能会更好)你是在要求批评吗?
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