我有一个 textarea 并希望在插入数据库之前检查它:检测20个集成字符并在第20个字符后面添加一个空格。
以下是一个例子:
$var = 'hello worlddddddddddddddddddddddddddddddddddddddd!';
我想要这个输出:
$newvar = 'hello worldddddddddddddddd dddddddddddddddddddd ddddd!';
点:所以有一点,我想禁用href
内容的这种分离。例如:
$var = '<a href="www.google.commmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm">link</a>';
然后我想要一个完整的输出(因为长文本是href
值):
$newvar = '<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>';
因为在=
之后遗漏了href
。
答案 0 :(得分:1)
尝试使用正则表达式:
((?<=\s)\w{19}|(?<=\G)\w{19})
DEMO 和'$ 1'
一起喋喋不休修改强> 试试这个:
(<a href="[^\n]+?<\/a>|[^\s]{19}|(?<=\G)[^\s]{19}(?=[^\n]+$))
DEMO
但是它会在整个部分
<a href="...."</a>
)
答案 1 :(得分:1)
尝试此代码,我测试它并获得正确的结果
$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;
答案 2 :(得分:0)
我认为你应该使用preg替换它。
示例:$ newvar = preg_replace('/([^ \ s] {20})/','$ 1',$ var);
这将在一行中搜索20个非空格字符,并在它们后面添加空格字符。
答案 3 :(得分:0)
你可以检查与preg_match函数匹配的正则表达式返回true或false 见here和 试试这个:
if(preg_match('/([^\s]{19})/', $var)){
preg_replace('/([^\s]{19})/', '$1 ', $var);
}