1. 程式人生 > >php 中查詢某個字元在字串中出現的所有位置

php 中查詢某個字元在字串中出現的所有位置

昨天回家,一個朋友討論起來查詢某個字元在指定的字串中所有出現的位置..

於是,今天早上寫個方法試試

/**

 * 查詢某個字元在字串中出現的所有位置

 * $str string 被查詢字串

 * $char string 查詢字元

 * $arr  array() 返回陣列

 */

function getCharpos($str, $char){

     $j = 0;

     $g = 0;

     $arr = array();

     $count = substr_count($str, $char);

     for($i = 0; $i < $count; $i++){

            $j = strpos($str, $char);

            if($i == 0){

                 $arr[] = $j;

            }else{

           $arr[] = $j + $g + 1;

            }

          $str = substr($str, $j+1);

          $g = end($arr);

    }

    return $arr;

}

原理就是擷取字串,再查詢這個字元的位置。。。

不過後來,我看了一下手冊,發現函式strpos還有第三個引數,就是告訴函式從哪算起,發現這個比較方便。。。

於是改成:

function getCharpos2($str, $char){

       $j = 0;

       $arr = array();

       $count = substr_count($str, $char);

       for($i = 0; $i < $count; $i++){

             $j = strpos($str, $char, $j);

             $arr[] = $j;

             $j = $j+1;

       }

       return $arr;

}

如果發現什麼問題,歡迎指出來!!

相關推薦

【C語言】模擬實現strchr函式.即在一個字串查詢一個字元第一次出現位置並返回

//模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回 #include <stdio.h> //#include <string.h> #includ

【c語言】模擬實現strchr函式,功能:在一個字串查詢一個字元第一次出現位置,如果沒有出現返回NULL

// 模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char cons

php 查詢某個字元字串出現所有位置

昨天回家,一個朋友討論起來查詢某個字元在指定的字串中所有出現的位置.. 於是,今天早上寫個方法試試 /**  * 查詢某個字元在字串中出現的所有位置  * $str string 被查詢字串  * $char string 查詢字元  * $arr  array() 返

【find_in_set】SQL查詢某個特定字串出現在指定欄位(N子鏈)位置

在mysql資料庫中,我們會經常用到in語法,用來查詢某個欄位包含N子鏈中的一個或多個字串,如: select * from table where id in('1,2,3,4'); 但如果某個欄位本身是儲存的N子鏈,然後需要查出其中擁有某個特定值呢?這種需求在

純JS實現在一個字串b查詢另一個字串a出現所有位置,並且不使用字串的方法(遞迴)

問題:判斷字串A在中所有出現字串B中(長度大於1)的索引。不得使用字串方法indexof,substring等     有小夥伴在面試遇到了這個問題,乍一看如果使用使用字串方法indexof,substring,很簡單容易實現,但如果不使用這些方法,怎麼樣才能實現這個需求呢    

SQL Server查詢某個欄位長度最短的一列資料

這個需求在查詢和篩選的時候會用到。我們可以看看下面兩種方法,均可。 至於效率問題自行研究試試。 方法一 SELECT top 1 ROW_ID,SPLIT_NO FROM CD_EMP WHERE

sqlserver 查詢某個字元字串第N次出現位置

select dbo.fn_find('A',@str,1) as one, dbo.fn_find('A',@str,2) as two, dbo.fn_find('A',@str,3) as three, dbo.fn_find('A',@str,4) as four

js 判斷字串是否包含某字串,String物件查詢字元indexOf,查詢字串出現的次數split

varCts = "bblText"; if(Cts.indexOf("Text") > 0 ) { alert('Cts中包含Text字串'); } indexOf用法: 返回 String 物件內第一次出現子字串的字元位置。       strObj.

substring()的應用_查詢某個字元字串的具體位置

import java.util.Scanner;public class Dm{public static void main(String[] args){String str = "吃葡萄不吐葡萄

oracle,查詢某個欄位,某字元出現的次數

SELECT LENGTHB(TRANSLATE('1,2,34,5',',12345',',')) FROM DUAL;SELECT LENGTHB('1,2,34,5')-LENGTHB(REPL

編寫一個方法,計算一個字串,第一個不重複的字元在當前字串的索引。即是這個字串唯一一個存在的字元第一個出現位置

1.編寫一個方法,計算一個字串中,第一個不重複的字元在當前字串中的索引。即是這個字串唯一一個存在的字元第一個出現的位置 比如saaaaafss 輸出f saaaaaf 輸出 s public class S1 { public static void main(String args

ORACLE——在所有表、欄位查詢某個字串並輸出表名和欄位名

什麼都不想說,直接上乾貨 declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from

php正則表示式 剔除字串的除了漢字的字元(只保留漢字)

1)utf-8的編碼格式,匹配中文程式碼如下: <?php     $str = "utf-8下匹配出中文字串";     $preg = "/[\x{4e00}-\x{9fa5}]+/u";     if(preg_match_all($preg,$str,$mat

java怎麼判斷一個字串包含某個字元字串

var Cts = "bblText"; if(Cts.indexOf("Text") > 0 ) { alert('Cts中包含Text字串'); } indexOf用法:  返回 String 物件內第一次出現子字串的字元位置。         strObj.ind

在java清除某個字元後的所有字串

首先獲取字串:String str ="";然後獲取該字元的在字串裡的位置:int i = str.indexOf("字元");//首先獲取字元的位置最後呼叫字串擷取 :String newStr = str.substring(0,i);//再對字串進行擷取,獲得想要得到

plsql擷取字串欄位某個字元

擷取字串字串s=" hello world  ! (name) " 如果要擷取括號中的字串可以採取如下方法。 select substr(s,instr(s,'(')+1,instr(s,')')-instr(s,'(')-1) from table; 分析下:    

查詢兩個字串的相同的字元位置

class Solution { public:     vector<int> findAnagrams(string s, string p) {      vector<int>ve1(256,0);            vector<int>ve2(256,0);

10-1. 在字串查詢指定字元(15)

 輸入一個字串S,再輸入一個字元c,要求在字串S中查詢字元c。如果找不到則輸出“Not found”;若找到則輸出字串S中從c開始的所有字元。 輸入格式: 輸入在第1行中給出一個不超過80個字元長度的、以回車結束的非空字串;在第2行中給出一個字元。 輸出格式: 在

hadoop查詢某個字串所在的hdfs位置

在/home/test/2017-08-23這個目錄中查詢包含0001a794d86f0844的檔案 1、shell for迴圈 適用於hdfs容量比較小的的 for file in `hadoop fs -ls /home/test/2017-

mysql如何查詢某個資料表時間最新的多條資料

通過t_test表的time欄位來比較。 SELECT a.* FROM t_test a WHERE NOT EXISTS(SELECT 1 FROM t_test b WHERE b.tim