PHP 一个字符串,如何提取其中相同的字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 一个字符串,如何提取其中相同的字符?相关的知识,希望对你有一定的参考价值。
例如:“90pil8a94riqp”
请问如何计算并得到结果:9pi ?
2、取第一个元素,保存到变量中A;
3、循环开始从第二个元素取,逐一和变量A比较,若相等,则终止循环,将A保存到一个新数组NEWARRAY中;
4、取第二个(下一个)元素,保存到A中,然后重复第三步,不同的是,从当前元素的下一个元素开始获取;
5、最终数组NEWARRAY中就是你要的值了。 参考技术A 这是我的代码,你试试
<?php
$str="90pil8a94riqp";
$arr=str_split($str);
$arr=array_count_values($arr);
$array = array();
foreach ($arr as $key =>$value)
if($value >=2)
$array[] = $key;
print_r($array);
得到的结果是一个数组 参考技术B $string="90pil8a94riqpaa";
$array1=str_split($string);
$array2=array_count_values($array1);
//用array_map();的回调函数
//还是foreach循环
//只要是元素的值大于1它的键值就是字符串中的重复值
//很简单的多思考吧 参考技术C 相同的字符太多了吧 参考技术D <?php
$str = '90pil8a94riqp';
//$str = 'ababbdddddddccc128913a84uuuuiiia';
//$str = 'abcabc';
$result = array();
for($x=0;$x<=strlen($str);$x++)
preg_match_all('/(\w)(?:.*?)\1+/i',substr($str,$x,strlen($str)),$m);
if(isset($m[1][0]) && $m[1][0])
$result[] = $m[1][0];
var_dump(array_unique($result));
?>
php正则表达式字符串中提取数字,并截取其中的6位
用 php 先提取字符串 b37ba964bb7dfab1869e1cf8 中的数字
例如截取后数字是:379647186918
然后最终获取从
第二位开始,长度4位数字:7964
或者
第三位开始,长度5位数字:96471
php 中该如何表达,谢谢!
麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$函数”调用,这个应该怎么写?
$str='b37ba964bb7dfab1869e1cf8';
$preg= "/\\d/is";
preg_match_all($preg,$str,$arr);
$temp=implode('',$arr[0]);
echo $temp;//匹配的数字
echo '<br/>'. substr($temp,1,4);//第2位开始取4个
echo '<br/>'.substr($temp,2,5);//第3位开始取5个
?>追问
麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用,这个应该怎么写?
追答没明白你在说啥
追问感谢
参考技术A1、先把字符串 “b37ba964bb7dfab1869e1cf8” 中的字母(或者说非数字)替换掉,剩下的就都是数字
// 输出 $string = 379647186918
2、截取字符串
echo substr('379647186918', 2, 5); // 第三位开始截5个长度,输出 96471追问
麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用,这个应该怎么写?
追答$string = preg_replace('/[^\\d]*/', '', $key);本回答被提问者采纳 参考技术B思路:首先移除非数字内容(利用正则),然后使用字符串进行截取(substr)。写成函数可以直接调用。代码如下:
function ProcessString($str,$start,$len)$result=preg_replace("/[\\D]/","",$str);//利用正则替换掉非数字内容
return substr($result,$start,$len); //利用substr进行字符截取
$str="b37ba964bb7dfab1869e1cf8";
echo ProcessString($str,1,4); //7964 字符由零开始,1表示第二位,4表示截取长度
echo ProcessString($str,2,5); //96471//其中$str为要处理的字符串,$start是截取数字的起始位置 $lend表示要处理的长度
如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用应该这样写(利用以上函数):
echo ProcessString($key,2,5);
感谢
以上是关于PHP 一个字符串,如何提取其中相同的字符?的主要内容,如果未能解决你的问题,请参考以下文章