我从不同的服务器获取数据,并且还有一个帖子的字符串(标题),它也传递给我的服务器。我试图过滤掉不需要的空格和字符,但它似乎不起作用。我做的代码是
$find = array("%"," ","&","%20");
$replace = array("-");
$post_filtered_name=strtolower(str_replace($find,$replace,$post_title));
但是我得到了结果
benten
而不是我应该
ben-ten
答案 0 :(得分:2)
请参阅此处有关参数的部分:
http://php.net/manual/en/function.str-replace.php
如果搜索和替换是数组,则str_replace()接受一个值 从每个数组中使用它们来搜索和替换主题。 如果 replace比搜索值少,然后使用空字符串 其余的替换值。
然而:
如果搜索是一个数组,则替换为a string,然后这个替换字符串用于每个值 搜索。但是反过来没有意义。
所以相反:
$replace = array("-");
只需使用:
$replace = "-";
答案 1 :(得分:1)
试试这个:
$replace = "-";
而不是
$replace = array("-");
答案 2 :(得分:1)
由于您只有一个替换所有针,不要使它成为一个阵列。将它作为一个字符串传递,休息已经很好了。
$replace = "-";
<强> Fiddle 强>
这也可以从PHP Manual
确认如果搜索和替换是数组,则str_replace()从每个数组中获取一个值,并使用它们来搜索和替换主题。如果replace的值小于search,则空字符串将用于其余的替换值。 如果search是数组且replace是字符串,则此替换字符串将用于搜索的每个值。但是反过来没有意义。
答案 3 :(得分:0)
在转换字符串时尝试此操作:
$post_title="ben ten%20Hero";
$post_filtered_name=strtolower(preg_replace('/(\%|\s)+/', '-', urldecode($post_title)));
echo $post_filtered_name;
答案 4 :(得分:0)
您尝试通过传递数组$find
从字符串中过滤掉许多不需要的和额外的字符。因此,您还必须单独为每个搜索元素提供替换字符串。
所以在这里你必须替换这个
$replace = array("-");
带
$replace = array("-","-","-","-");
$find
和$replace
中的索引数必须相同。