我有以下字符串:
$thetextstring = "jjfnj 948"
最后我希望:
echo $thetextstring; // should print jjf-nj948
所以基本上我要做的是加入分离的字符串,然后将前3个字母与-
分开。
到目前为止我已经
了$string = trim(preg_replace('/s+/', ' ', $thetextstring));
$result = explode(" ", $thetextstring);
$newstring = implode('', $result);
print_r($newstring);
我已经能够加入这些单词,但是如何在前3个字母后添加分隔符?
答案 0 :(得分:3)
使用带有Salesperson
函数的正则表达式,这将是一个单行程序:
preg_replace
故障:
^.{3}\K([^\s]*) *
PHP代码:
^ # Assert start of string
.{3} # Match 3 characters
\K # Reset match
([^\s]*) * # Capture everything up to space character(s) then try to match them
<强> PHP live demo 强>
答案 1 :(得分:1)
EVP_MD_CTX_copy_ex()
这会提供所请求的$thetextstring = "jjfnj 948";
// replace all spaces with nothing
$thetextstring = str_replace(" ", "", $thetextstring);
// insert a dash after the third character
$thetextstring = substr_replace($thetextstring, "-", 3, 0);
echo $thetextstring;
答案 2 :(得分:1)
您可以使用str_replace
删除不需要的空间:
$newString = str_replace(' ', '', $thetextstring);
$ newString:
jjfnj948
然后preg_replace
加入短划线:
$final = preg_replace('/^([a-z]{3})/', '\1-', $newString);
这个正则表达式指令的含义是:
^
([a-z]{3})
\1-
$最终:
jjf-nj948
答案 3 :(得分:1)
你继续进行是正确的。对于最后一步,包括在第三个字符后插入-
,您可以使用substr_replace function,如下所示:
$thetextstring = 'jjfnj 948';
$string = trim(preg_replace('/\s+/', ' ', $thetextstring));
$result = explode(' ', $thetextstring);
$newstring = substr_replace(implode('', $result), '-', 3, false);
如果您有足够的信心,您的字符串将始终具有相同的格式(字符后跟空格后跟数字),您还可以减少计算并简化代码,如下所示:
$thetextstring = 'jjfnj 948';
$newstring = substr_replace(str_replace(' ', '', $thetextstring), '-', 3, false);
访问this link了解有效的演示。
答案 4 :(得分:1)
在不了解字符串如何变化的情况下,这是您的任务的可行解决方案:
模式:
~([a-z]{2}) ~ // 2 letters (contained in capture group1) followed by a space
替换:
-$1
代码:(Demo)
$thetextstring = "jjfnj 948";
echo preg_replace('~([a-z]{2}) ~','-$1',$thetextstring);
输出:
jjf-nj948
注意此模式可以轻松扩展,以包含超出空格的小写字母之外的字符。 ~(\S{2}) ~
答案 5 :(得分:0)
没有正则表达式的Oldschool
$test = "jjfnj 948";
$test = str_replace(" ", "", $test); // strip all spaces from string
echo substr($test, 0, 3)."-".substr($test, 3); // isolate first three chars, add hyphen, and concat all characters after the first three