Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检测一定数量的连续字符并在其后面加空格_Php_Regex - Fatal编程技术网

Php 如何检测一定数量的连续字符并在其后面加空格

Php 如何检测一定数量的连续字符并在其后面加空格,php,regex,Php,Regex,我有一个textarea,希望在插入数据库之前检查它:检测20个完整字符,并在第20个字符后加一个空格 以下是一个例子: $var = 'hello worlddddddddddddddddddddddddddddddddddddddd!'; 我想要这个输出: $newvar = 'hello worldddddddddddddddd dddddddddddddddddddd ddddd!'; 要点:因此有一点,我想对href内容禁用此分离。例如: $var = '<a href="w

我有一个textarea,希望在插入数据库之前检查它:检测20个完整字符,并在第20个字符后加一个空格

以下是一个例子:

$var = 'hello worlddddddddddddddddddddddddddddddddddddddd!';
我想要这个输出:

$newvar = 'hello worldddddddddddddddd dddddddddddddddddddd ddddd!';
要点:因此有一点,我想对
href
内容禁用此分离。例如:

$var = '<a href="www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
$var    = '<a href"www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
$newvar = '<a href"www.google.c ommmmmmmmmmmmmmmmmmm mmmmmmmmmmmm">link</ a>';
可能吗



编辑:事实上,我希望避免损坏链接,并为所有其他内容留出空间。例如:

$var = '<a href="www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
$var    = '<a href"www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
$newvar = '<a href"www.google.c ommmmmmmmmmmmmmmmmmm mmmmmmmmmmmm">link</ a>';
$var='';
$newvar='link';

因为在
href

之后缺少
=
,所以我认为您应该使用preg replace

示例:$newvar=preg_replace('/([^\s]{20})/','$1',$var)


这将搜索一行中的20个非空格字符,并在其后面添加空格字符。

您可以使用返回true或false的preg_match函数检查正则表达式匹配 看到和 试试这个:

if(preg_match('/([^\s]{19})/', $var)){
preg_replace('/([^\s]{19})/', '$1 ', $var);
}
尝试使用正则表达式:

((?<=\s)\w{19}|(?<=\G)\w{19})

((?试试这段代码,我测试了一下,得到了正确的结果

$s = 'hello worlddddddddddddddddddddddddddddddddddddddd! <a href="www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
$array = explode(" ", $s);

$str="";
foreach ($array as $value)
{
    if (!preg_match("/href/", $value))
    {
//        $subArray=preg_split("/([.]{19})/", $value);
//        print_r($subArray);
        $str.=" ";
        $str.= preg_replace('/([^\s]{19})/', '$1 ', $value);
    }else{
         $str.=" ".$value;
    }

}
echo $str;
$s='hello worldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd;
$array=explode(“,$s);
$str=”“;
foreach($array作为$value)
{
如果(!preg_match(“/href/”,$value))
{
//$subArray=preg_split(“/([.]{19})/”,$value);
//打印(子阵列);
$str.=”;
$str.=preg_replace('/([^\s]{19})/','$1',$value);
}否则{
$str.=“”.$value;
}
}
echo$str;


在您的预期输出中,您在16天后有一个空格,因为您说过要在20天后有空格character@Kasramvd不,不,重复并不重要,只有20个完整字符。作为提示,您可以替换
(\w{19})(\w)的结果
使用
\1\2
@Kasramvd对我来说最重要的一点是检测
href
值并将其释放!无论如何,谢谢,我会尝试it@Sajad您的解决方案很好,但这是一个小问题,它甚至为
href
值添加了一个空格。如何防止这种情况发生?它将匹配任何超过20个字符的序列s如
pneumoultramicroscopicsilicovolcanoconiosis
;)检测
href
值在哪里?看,我需要检测
$marched
之前的6个字符,我怎么做?请输入
href=“
而不是
任何符号
,有可能吗?@Sajad你所说的
任何符号
是什么意思?如果在每个第20个censecutive字符(A-Za-z_0-9)之前有空格,则此正则表达式将在其前面插入空格,因此它将不匹配href。”=“…或者你想匹配它吗?谢谢,但是第一个更好,不,我不想匹配
href
值。第一个的问题是它仍然不匹配:
href”www.google.commmmmmmmmm”
。它应该是匹配的,因为它在
href
之后没有
=
。我只想
href
的值保持不变!
我想避免损坏链接,并匹配所有其他内容。只需在新的php文件中复制并通过即可查看结果我检查了它,它有一些问题,请测试:
链接
所以它不是一个链接,因为
a
被删除了,那么应该是matchedit对href不敏感
你是对的,但对我来说没有用,无论如何+1 voteup供你尝试。谢谢。