Php用短划线在单词中创建空格

时间:2018-02-18 23:04:46

标签: php replace

我有以下字符串:

$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个字母后添加分隔符?

6 个答案:

答案 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字符:([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 Link

代码:(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