如何在PHP';什么是变量?

如何在PHP';什么是变量?,php,string,whitespace,Php,String,Whitespace,我知道这个PHP.net。 我想为PHP提供类似的工具,如tr,这样我就可以简单地运行 tr -d " " "" 我运行函数php\u strip\u whitespaceby失败 $tags_trimmed = php_strip_whitespace($tags); 我运行regex函数也没有成功 $tags_trimmed = preg_replace(" ", "", $tags); 我相信preg_replace会寻找类似于[:space://code>的东西,如果您想从$tag

我知道这个PHP.net。 我想为PHP提供类似的工具,如
tr
,这样我就可以简单地运行

tr -d " " ""
我运行函数
php\u strip\u whitespace
by失败

$tags_trimmed = php_strip_whitespace($tags);
我运行regex函数也没有成功

$tags_trimmed = preg_replace(" ", "", $tags);

我相信preg_replace会寻找类似于
[:space://code>

的东西,如果您想从$tags中删除所有空格,为什么不:

str_replace(' ', '', $tags);
如果要删除新行,并且需要更多的…

来去除任何空白,可以使用正则表达式

$str=preg_replace('/\s+/', '', $str);

有关可以处理UTF-8字符串中的空白的内容,请参见。

有时需要删除连续的空白。您可以这样做:

$str = "My   name    is";
$str = preg_replace('/\s\s+/', ' ', $str);
if(!function_exists('strim')) :
function strim($str,$charlist=" ",$option=0){
    $return='';
    if(is_string($str))
    {
        // Translate HTML entities
        $return = str_replace(" "," ",$str);
        $return = strtr($return, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
        // Choose trim option
        switch($option)
        {
            // Strip whitespace (and other characters) from the begin and end of string
            default:
            case 0:
                $return = trim($return,$charlist);
            break;
            // Strip whitespace (and other characters) from the begin of string 
            case 1:
                $return = ltrim($return,$charlist);
            break;
            // Strip whitespace (and other characters) from the end of string 
            case 2:
                $return = rtrim($return,$charlist);
            break;

        }
    }
    return $return;
}
endif;
输出:

My name is

任何可能的选择都是使用自定义文件包装器将变量模拟为文件。您可以使用以下方法实现此目标:

1) 首先,注册包装器(在文件中只注册一次,就像session_start()一样使用):

2) 然后定义您的包装器类(它写得非常快,不完全正确,但可以正常工作):

3) 然后在var://protocol上对包装器使用任何文件函数(您也可以将其用于include、require等):


注意:不要忘记将变量置于全局范围内(如global$\u myVar)

您可以使用
ereg\u replace

 $str = 'This Is New Method Ever';
 $newstr = ereg_replace([[:space:]])+', '',  trim($str)):
 echo $newstr
 // Result - ThisIsNewMethodEver

您可以使用php中的trim函数来修剪两侧(左侧和右侧)

你也可以使用

ltrim() - Removes whitespace or other predefined characters from the left side of a string
rtrim() - Removes whitespace or other predefined characters from the right side of a string
系统:PHP 4,5,7

文档:

正则表达式默认情况下不包含UTF-8字符。
\s
元字符仅用于原始拉丁字符集。因此,以下命令仅删除制表符、空格、回车和新行

// http://stackoverflow.com/a/1279798/54964
$str=preg_replace('/\s+/', '', $str);
随着UTF-8成为主流,此表达式在达到新的UTF-8字符时将更频繁地失败/停止,从而留下空格,
\s
无法解释

为了处理unicode/utf-8中引入的新类型的空格,需要更广泛的字符串来匹配和删除现代的空格

由于默认情况下正则表达式不识别多字节字符,因此只能使用分隔的元字符串来识别它们,以防止字节段在其他utf-8字符中发生变化(四元集中的
\x80
可以替换智能引号中的所有
\x80
子字节)

这将说明并删除制表符、换行符、垂直制表符、换行符、回车符、空格,以及以下内容:

nextline,非中断空格,蒙古语元音分隔符,[四元音,四元音,四元音,三元音,四元音,六元音,数字,标点,空格,空白,头发,零宽度,零宽度,非连接符,零宽度连接符],行分隔符,段落分隔符,窄无中断符,中等数学空间、字连接符、表意空间和零宽度非中断空间

当从自动化工具或站点导出时,其中许多会对xml文件造成严重破坏,这些工具或站点会扰乱文本搜索和识别,并且可以不可见地粘贴到PHP源代码中,从而导致解析器跳转到下一个命令(段落和行分隔符),从而导致代码行被跳过,从而导致断续,我们开始称之为“文本传播疾病”的无法解释的错误


[从web复制和粘贴不再安全。请使用字符扫描程序保护您的代码。lol]

您还可以使用
preg\u replace\u callback
函数。这个函数与它的同级
preg_replace
完全相同,不同的是它可以使用回调函数,让您能够更好地控制如何操作输出

$str = "this is a   string";

echo preg_replace_callback(
        '/\s+/',
        function ($matches) {
            return "";
        },
        $str
      );

是旧帖子,但可以这样做:

$str = "My   name    is";
$str = preg_replace('/\s\s+/', ' ', $str);
if(!function_exists('strim')) :
function strim($str,$charlist=" ",$option=0){
    $return='';
    if(is_string($str))
    {
        // Translate HTML entities
        $return = str_replace(" "," ",$str);
        $return = strtr($return, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
        // Choose trim option
        switch($option)
        {
            // Strip whitespace (and other characters) from the begin and end of string
            default:
            case 0:
                $return = trim($return,$charlist);
            break;
            // Strip whitespace (and other characters) from the begin of string 
            case 1:
                $return = ltrim($return,$charlist);
            break;
            // Strip whitespace (and other characters) from the end of string 
            case 2:
                $return = rtrim($return,$charlist);
            break;

        }
    }
    return $return;
}
endif;

当出现HTML实体时,标准trim()函数可能会出现问题。这就是为什么我写了“超级修剪”函数用来处理这个问题,你也可以选择从字符串的开始、结束或摊位侧修剪。

从整个字符串中删除空格的一个简单方法是使用explode函数,并使用for循环打印整个字符串

 $text = $_POST['string'];
            $a=explode(" ", $text);
            $count=count($a);
            for($i=0;$i<$count; $i++){

                echo $a[$i];
            }
$text=$\u POST['string'];
$a=分解(“,$text”);
$count=计数($a);

对于($i=0;$i),regex参数与UTF-8多字节字符串不兼容

这个PHP正则表达式是我使用基于PCRE(Perl兼容正则表达式)的参数替代UTF-8字符串来解决这个问题的:

function remove_utf8_whitespace($string) { 
   return preg_replace('/\h+/u','',preg_replace('/\R+/u','',$string)); 
}
示例用法-

之前:

$string = " this is a test \n and another test\n\r\t ok! \n";

echo $string;

 this is a test
 and another test
         ok!

echo strlen($string); // result: 43
$string = remove_utf8_whitespace($string);

echo $string;

thisisatestandanothertestok!

echo strlen($string); // result: 28
之后:

$string = " this is a test \n and another test\n\r\t ok! \n";

echo $string;

 this is a test
 and another test
         ok!

echo strlen($string); // result: 43
$string = remove_utf8_whitespace($string);

echo $string;

thisisatestandanothertestok!

echo strlen($string); // result: 28
PCRE参数列表

资料来源:


以标记的形式存在一些特殊类型的空白。 你需要使用

$str=strip_标签($str);

若要删除冗余标记,请先删除错误标记,以获取正常字符串

和使用

$str=preg_replace('/\s+/',''$str);


这对我来说很有用。

这是一篇老文章,但这里没有列出最短的答案,所以我现在添加它

strtrtr($str,[''=>'']);

另一种常见的“剥这只猫的皮”的方法是像这样使用爆炸和内爆


内爆(“”,explode(“”,$str));

如果您不将结果赋给变量,这实际上不会做任何有用的事情。任何其他解决方案。这(preg\u replace)对我来说失败了。Kathir,它是用什么输入失败的?为什么人们总是把
+
放在
s
之后?你不需要它。它比逐个替换它们快一个数量级,这就是为什么:)听起来您试图解决OP的另一个问题。这是一个从字符串中删除所有空白的解决方案。这很复杂,初学者可能不想看这个。但是为了表现出我的努力,我会投你一票,这样这篇文章中的-1将被删除是的,我知道这很复杂,但是
function remove_utf8_whitespace($string) { 
   return preg_replace('/\h+/u','',preg_replace('/\R+/u','',$string)); 
}
$string = " this is a test \n and another test\n\r\t ok! \n";

echo $string;

 this is a test
 and another test
         ok!

echo strlen($string); // result: 43
$string = remove_utf8_whitespace($string);

echo $string;

thisisatestandanothertestok!

echo strlen($string); // result: 28
Character   Legend  Example Sample Match
\t  Tab T\t\w{2}    T     ab
\r  Carriage return character   see below   
\n  Line feed character see below   
\r\n    Line separator on Windows   AB\r\nCD    AB
    CD
\N  Perl, PCRE (C, PHP, R…): one character that is not a line break \N+ ABC
\h  Perl, PCRE (C, PHP, R…), Java: one horizontal whitespace character: tab or Unicode space separator      
\H  One character that is not a horizontal whitespace       
\v  .NET, JavaScript, Python, Ruby: vertical tab        
\v  Perl, PCRE (C, PHP, R…), Java: one vertical whitespace character: line feed, carriage return, vertical tab, form feed, paragraph or line separator      
\V  Perl, PCRE (C, PHP, R…), Java: any character that is not a vertical whitespace      
\R  Perl, PCRE (C, PHP, R…), Java: one line break (carriage return + line feed pair, and all the characters matched by \v)      
$string = trim(preg_replace('/\s+/','',$string));