我有类似A - Z
,Artists & Makers
的字符串,它是从foreach循环返回的。
输出如:
在新闻中
A - Z
艺术家&制造商
主要目标是删除空白并替换为-
并转换为小写,我在下面做了如下:
$post = <!--returned from foreach the output given above-->
$postvalue= = str_replace(' ', '-', strtolower($post)); //condition 1
现在我需要完成所有替换,如下所示,更改应该在名为$postvalue
$azpostvalue= str_replace("A - Z", "a-z", $post); //condition 2
$artistspostvalue= str_replace("Artists & Makers", "artists-makers", $post); //condition 3
$spacepostvalue= str_replace(' ', '-', strtolower($postvalue));
意图是str_replace所有大写字母,额外空格并替换为小写字母,尤其是A - Z
,(space)&(space)
,我需要输出a-z
和artists-makers
。< / p>
基本上所有这些变化(即条件1,2,3)都应该是一行中的$ postvalue。
但无法用单行
进行答案 0 :(得分:0)
好像你过度复杂了。只需使用:
$postvalue = str_replace("a - z", "a-z", $postvalue);
请注意,您已将其转换为小写,因此您应该匹配a
和z
,而不是A
和Z
。
除了您的代码有效之外,它会替换不属于a - z
的字母 - 单词末尾的任何a
都会删除其后的空格。
答案 1 :(得分:0)
为什么不先用空格替换连字符,然后再替换其余的空格。如果我理解你的要求那么这应该有用:
$post = <!--returned from foreach the output given above-->
$postvalue = str_replace(' - ', '-', strtolower($post));
$postvalue = str_replace(' ', '-', $postvalue);