如何在PHP';什么是变量?
我知道这个PHP.net。 我想为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
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));