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