PHP修剪问题

时间:2010-08-09 14:38:29

标签: php

asked earlier如何删除在用户提交的文本末尾添加的额外连字符和空格,例如,-ruby-on-rails-应该是ruby-on-rails你们建议的trim() trim()它本身工作得很好但是当我把它添加到我的代码时它根本不起作用它实际上对我的代码做了一些时髦的事情。

我尝试将$tags = preg_split('/,/', strip_tags($_POST['tag']), -1, PREG_SPLIT_NO_EMPTY); $tags = str_replace(' ', '-', $tags); 代码放在我的代码中的每个位置,但没有任何工作可以帮助我摆脱在用户提交的文本的末尾和开头添加的额外连字符和空格?

这是我的PHP代码。

{{1}}

4 个答案:

答案 0 :(得分:2)

如果你有一个字符串,你可以这样做从开头和结尾去除连字符:

$tag = trim($tag, '-');

您的问题是preg_split返回一个数组,但trim需要一个字符串。您需要对数组中的每个字符串执行上述操作。

关于修剪空格:如果你是第一次将所有空格转换为连字符,那么之后不需要修剪空格 - 空格已经消失了。但要小心,因为术语“空白”和“空间”具有不同的含义。你的问题似乎混淆了这两个术语。

答案 1 :(得分:2)

将trim语句更新为以下内容以更新数组中的每个项目:

foreach($tags as $key=>$value) {
    $tags[$key] = trim($value, '-');
}

这应该允许您根据预期的字符串修剪每个值。

答案 2 :(得分:0)

验证您尝试修剪的连字符是否与包裹-ruby-on-rails-的连字符相同。例如,这些都是看起来相似的不同字符: - , - , - , - 。

答案 3 :(得分:0)

我是StackOverflow.com的新手,所以我希望我写的这个函数能以某种方式帮助你。您可以在第二个参数中指定要修剪的字符,对于您的示例我将其设置为仅删除空格和默认情况下的“破折号”,我使用'ruby-on-rails'进行了测试' - - - - ruby​​-on-rails - - - - - '的极端例子,两者都产生了结果:'ruby-on-rails'。

正则表达式可能是一种q& d方式,但我希望它可以帮助你,只要你在实现它或w / e时遇到任何问题就回复。

function customTrim($s,$c='- ')
{
    preg_match('#'.($a='[^'.$c.']').'.{1,}'.$a.'#',$s,$match);
    return $match[0];
}