Webページのソースコードを取得した後に文字列の一部を取得する必要があることが多いのですが、正規表現の使い方が分からず、自分で書いた式では意図した内容が取得できないことが多いため、基本的に目的のテキストにアクセスできる関数を自分で書きました。
関連する推奨事項: 「PHP チュートリアル 」
1. 実装関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function get_msg( $str , $start_str , $stop_str , $count , $n ){
$start = $n ;
$data = array ();
for ( $i =0; $i < $count ; $i ++){
$start = strpos ( $str , $start_str , $start );
$stop = strpos ( $str , $stop_str , $start );
$start = strlen ( $start_str )+ $start ;
$data [ $i ]= substr ( $str , $start , $stop - $start );
$start = $stop ;
}
return $data ;
}
|
ログイン後にコピー
2. 実装例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php
$stra = "你看这是一个字符串" ;
$strb = "你看这依然是个字符串,你看这依然是个字符串,你看这个依然就取不到" ;
$resultArra = get_msg( $stra , "你看" , "符串" ,1,0);
$resultArrb = get_msg( $strb , "你看这" , "是个" ,3,0);
print_r( $resultArra );
print_r( $resultArrb );
function get_msg( $str , $start_str , $stop_str , $count , $n ) {
$start = $n ;
$data = array ();
for ( $i =0; $i < $count ; $i ++){
$start = strpos ( $str , $start_str , $start );
$stop = strpos ( $str , $stop_str , $start );
$start = strlen ( $start_str )+ $start ;
$data [ $i ]= substr ( $str , $start , $stop - $start );
$start = $stop ;
}
return $data ;
}
?>
|
ログイン後にコピー
結果を返す
1 2 | Array ( [0] => 这是一个字 )
Array ( [0] => 依然 [1] => 依然 [2] => )
|
ログイン後にコピー
2 番目の文字列 $strb には「静止」文字が 3 つありますが、関数に渡される条件を満たすのは 2 つだけなので、条件を満たす 2 つだけが見つかります。
もちろん、これは単なる単純な例であり、対応する条件を渡すだけで、より複雑な文字列も使用できます。
3. 文字と文字列の n 番目の出現を検索します
これは、要件に応じて、上記の関数と組み合わせて使用できます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function str_n_pos( $str , $find , $n ){
for ( $i =1; $i <= $n ; $i ++){
$pos = strpos ( $str , $find );
$str = substr ( $str , $pos +1);
$pos_val = $pos + $pos_val +1;
}
$count = $pos_val -1;
return $count ;
}
|
ログイン後にコピー
以上がPHP は、文字列内の n 番目の文字とその文字列の位置を取得します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。