在每个单词后添加字符

时间:2013-08-25 07:16:08

标签: php implode

我怎样才能在每个单词后破坏字符?

我尝试了以下内容:

$query = implode("* ", preg_split("/[\s]+/", $query));

但它总是忽略一个字。例如:test test会给我test* testtest会给我test,测试测试测试会给我test* test* test* test

还尝试了$query = implode("*", str_split($query));,但如果查询是用西里尔字符,则会给我带来胡言乱语。

3 个答案:

答案 0 :(得分:1)

implode将字符串连接在一起,并在每个项目之间插入“粘合字符串”。

如果您想更改每个字符串,可以改用array_map

implode(array_map(function($item) { return $item . '* '; }, $array));

我希望你不是在做数据库查询的时髦东西(考虑你的变量名)。如果要使用变量db查询,请改用参数化查询。

另一个“hack”是破坏你的数组,然后在结果字符串的末尾插入缺少的字符串:

implode('* ', $array) . '* ';

答案 1 :(得分:0)

试试这个

<?php

$str = 'test test test test test';  
$str = implode("* ", explode(" ", $str))."* ";

echo $str;

答案 2 :(得分:0)

尝试其他答案,或者您也可以使用preg_replace。但不推荐。当有一些干净的替代品时,请避免使用regex

<?php
  $query  = preg_replace( "/[\s]+/", "* ", $query )."*";
  echo $query;
?>

使用array_map

<?php
  $query  = explode( " ", "test test test test test" );
  $query  = array_map( function( $val ) {
    return trim( $val )."* ";
  }, $query );
  $query  = implode( "", $query );
  echo $query;
?>