隔离长字符串中的一个字符


Isolating a characterin a long string php

我有一个字符串$str,我想搜索一个字符并将其与其他字符串隔离,然后将其存储在一个$变量中,字符是一个完整的冒号":"

假设我有一个字符串

1。

$str = 'water'
$variable ='';

2。

$str = 'water : air'
$variable =':';

3。

$str = 'water : air : land'
$variable ='::'

e.t.c…

如果我使用substr_count($str, ":");,我可以计算出现的次数但我想返回字符本身取决于它出现的次数而不是数字

那么,使用substr_count使用它来重复它发生的次数。

$needle = ':';
$str = 'water : air : land';
$variable = str_repeat($needle, substr_count($str, $needle));
echo $variable; // ::

你走对了;可以将substr_count()str_repeat()组合:

str_repeat(':', substr_count($str, ':'));

或者如果你需要多次使用它,你可以把它变成一个函数:

function repeat_needle($needle, $haystack) {
    return str_repeat($needle, substr_count($haystack, $needle));
}

另一种简单的方法…使用preg_replace如下所示,这意味着将所有内容替换为null/blank,除了冒号":"

preg_replace ("/[^:]/",'',$

);
$cat a.php
<?php
  $a="water : air : land : Fire : Sky";
  $b=preg_replace("/[^:]/",'',$a);
  print $b."'n" ;
?>
$php a.php
::::