我正在尝试创建一个slug,所以我想剥离每个奇怪的charachter。 slug应该包含的唯一内容是小写字母和下划线。有没有办法检查奇怪的charachters并过滤掉字符串?应该删除所有不是字符串或下划线的内容
这就是我所拥有的:
if(!preg_match_all('/[a-z]/')):
$output = preg_replace("/ ... euhm ... /", "", $slug2);
else:
$output = $slug2;
endif;
我应该从这里开始:创建一个3D功能区环绕效果(加上一个免费的PSD!)
指向: create_a_3d_ribbon_wrap_around_effect_plus_a_free_psd
答案 0 :(得分:3)
$slug = strtolower($slug);
$slug = str_replace(" ", "_", $slug);
$slug = preg_replace("/[^a-z0-9_]/", "", $slug);
答案 1 :(得分:1)
无需初始匹配。您可以进行无条件搜索和替换。如果没有什么可以替代,没什么大不了的。在这里它是函数调用的一个大链:
$slug = trim(preg_replace('/[\W_]+/', '_', strtolower($slug)), '_');
或分成不同的行:
$slug = strlower($slug);
$slug = preg_replace('/[\W_]+/', '_', $slug);
$slug = trim($slug, '_');
说明:
strtolower
将大写字母转换为小写。\W
和_
。 “单词”字符是字母,数字或下划线。 “非单词”字符与此相反,即空格,标点符号和控制字符。 \W
匹配“非字”字符。代码是复杂的一面,因为它需要处理几个棘手的案例:
!)
。foo_-_bar
变成foo_bar
,而不是foo___bar
。应该折叠下划线,基本上。答案 2 :(得分:0)
$slug = preg_replace("[^a-z_]", "", $slug);