我必须将帖子存储到数据库中。我想将帖子标题存储为post url,因此我需要删除特殊字符和空格。我做到了。一切都工作正常但是当我在字符串的最后给出空格时,它最后显示连字符如下。
例如abcd_
如果有空格,我只想删除最后一个连字符
我已经尝试了以下 -
function clean($post_name) {
$post_name = str_replace(' ', '-', $post_name);
return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name);
}
$post_url=clean($post_name);
这怎么可能?
谢谢。
答案 0 :(得分:1)
在sqlite> create table "table" (
"id" char(36) default (lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))),
"data" varchar(255), primary key ("id")
);
sqlite> insert into "table" ("data") values ('foo');
sqlite> insert into "table" ("data") values ('bar');
sqlite> select * from "table";
947efcc9-4212-442a-b68c-eb6fbd8a7128|foo
a2c3857b-1eb4-40bd-aed2-6e8d68cc2ab8|bar
trim()
str_replace()
答案 1 :(得分:1)
解决问题的方法是我的1%
function clean($post_name) {
$post_name = trim($post_name);
答案 2 :(得分:1)
尝试这样。trim()
函数从字符串的两边删除空格和其他预定义字符。
function clean($post_name) {
$name = trim($post_name);
$post_name = str_replace(' ', '-', $name);
return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name);
}
$post_url=clean($post_name);
答案 3 :(得分:0)
只需检查给定字符串的最后两个字符即可。然后分配子串,如果它是定义的。您将能够将更多“已定义的字符”放入if块中进行检查。
$len = strlen($post_name)
// check if last two characters are ' -'
if ( substr($post_name, $len -2, $len) === ' -' ) {
// assign all but the last two characters.
$post_name = substr($post_name, 0, $len -2);
}