【问题标题】:PHP, explode multiple words and prefix them with a character [duplicate]PHP,爆炸多个单词并在它们前面加上一个字符[重复]
【发布时间】:2023-03-11 09:40:02
【问题描述】:

可能重复:
Add a prefix to each item of a PHP array

我尝试使用布尔模式全文搜索。

如果用户输入两个以上的单词,它应该是这样的。

Search Keyword :   Apple Macbook Air 

Result :   +Apple +Macbook +Air

所以,我做了一个 php 命令来实现这一点,但没有奏效。

$ArrayKeywords = explode(" ", $b_keyword);
for($i = 0; $i < sizeof($ArrayKeywords); $i++)
$array_keyword = '+"$ArrayKeywords[$i]" ';

你能告诉我如何做到这一点吗?

【问题讨论】:

  • 不应该像$array_keyword = "+".$ArrayKeywords[$i];
  • @Sachyn 你的代码不起作用:(
  • 我编辑了,看看是否有效
  • "It didn't work" 不是很好的问题描述,尽管在这种情况下很明显问题是什么。当您提出问题时,请尝试描述您拥有的代码会发生什么(错误消息?无效输出?其他什么?)。

标签: php


【解决方案1】:

也可以(demo)

echo preg_replace('(\w+)', '+$0', 'Apple Macbook Air');

【讨论】:

  • 不用全词匹配,preg_replace('(\b\w)', '+$0', 'Apple Macbook Air');效率更高
【解决方案2】:

为什么不这样做:

$keyword = '+' . trim(str_replace(' ',' +',$b_keyword));

【讨论】:

    【解决方案3】:

    真的不需要for 在那里循环

    // trims off consecutive spaces in the search term
    $b_keyword = preg_replace('/\s+/', ' ', $b_keyword); 
    $ArrayKeywords = explode(" ", $b_keyword);
    echo '+' . implode(' +', $ArrayKeywords);
    

    【讨论】:

    • james:需要支持多个空格,使用正则表达式。
    【解决方案4】:

    我发现字符串中的变量如何工作存在一些误解。

    您可能已经了解到,单引号内的任何内容都按原样解析,而双引号内的变量内容会打印出来,如下所示:

    $foo = 'bar';
    
    echo 'foo: $foo';    // result:  foo: $foo
    echo "foo: $foo";    // result:  foo: bar
    

    但是,你不能将这两种方法结合起来;将双引号 放在单引号内 不会打印变量的内容。双引号仅在 整个 字符串由它们分隔时才起作用。因此以下方法不起作用:

    echo 'foo: "$foo"';  // result:  foo: "$foo"
    

    将此扩展到您的情况,您可以将单引号替换为双引号并删除内部双引号。

    $array_keyword .= "+$ArrayKeywords[$i] ";
    

    还请注意,您必须将新单词连接到变量中(.=),否则每次循环都会覆盖该变量。

    附注:在遍历数组时,使用foreach 循环比使用for 循环容易得多:

    $ArrayKeywords = explode(" ", $b_keyword);
    $array_keyword = '';
    foreach( $ArrayKeywords as $keyword ) {
        $array_keyword .= '+$keyword ";
    }
    

    【讨论】:

    • 我明白为什么我的代码现在不起作用了.. 谢谢!
    【解决方案5】:

    如果你想要它用于制表符、换行符、空格等。

    echo preg_replace('(\s+)', '$0+', ' Apple Macbook Air');
    //output: +Apple +Macbook +Air
    

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 2016-05-10
      • 2012-04-06
      • 2011-07-20
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      相关资源
      最近更新 更多