如何在每个单词后内爆字符?
我尝试了以下方法:
$query = implode("* ", preg_split("/[\s]+/", $query));
但它总是忽略一个词。例如:test test
会给我test* test
,test
会给我test
,测试测试测试测试会给我test* test* test* test
也试过$query = implode("*", str_split($query));
,但如果查询是西里尔字符,它会给我乱码。
implode
将字符串连接在一起并在每个项目之间插入一个“胶水字符串”。
如果要更改每个字符串,则可以array_map
改用。
implode(array_map(function($item) { return $item . '* '; }, $array));
而且我希望您不要对数据库查询做一些时髦的事情(考虑到您的变量名)。如果要使用可变数据库查询,请改用参数化查询。
另一个“hack”是内爆你的数组,然后在结果字符串的末尾插入丢失的字符串:
implode('* ', $array) . '* ';
试试这个
<?php
$str = 'test test test test test';
$str = implode("* ", explode(" ", $str))."* ";
echo $str;
尝试其他答案,或者您也可以使用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;
?>