特定の単語の前後にすべてをphp文字列で取得するにはどうすればよいですか?たとえば、「5 x 8」という文字列がある場合、5と8を抽出して、それらを別々の変数に格納するにはどうすればよいですか?私はPHPに少し慣れていません。
私はもう試した
$foo = "5 times 8";
$foo = str_replace(" times ","",$foo);
じゃあ何?結果は「58」です
入力文字列に含まれていることが確実な場合は、次の" times "
ように実行できます。
$input = "5 times 8";
list($a, $b) = explode(' times ', $input);
echo $a; // "5"
echo $b; // "8"
もう少し複雑なことをする必要がある場合は、正規表現を使用してください。
$input = "5 times 8";
if (preg_match('!(\d+)\s*times\s*(\d+)!i', $input, $m)){
$a = $m[1];
$b = $m[2];
}
次のように、 explode()関数を使用できます。
$string = "5 times 8";
$var = explode(' times ', $string);
echo $var[0]; //echoes 5
echo $var[1]; //echoes 8
あなたexplode()
はあなたの文字列を使ってそれをすることができます...
$string = "5 times 8";
$var = explode(' times ', $string);
echo $var[0]; //echoes 5
echo $var[1]; //echoes 8
これはうまくいくでしょう
あなたはあなたの質問で「特定の単語の前後にすべてを取得する方法」と言いました。だからこれはすべてを取得します。のインスタンス.*
をeg\d*
に置き換えて、たとえば両側の数字を取得します。
以下は、一致がまったく見つからない場合は0を返し、一致が見つかった場合は>0を返します。
preg_match_all('/^(.*)times(.*)$/', $yourStringToSearch, $arr, PREG_PATTERN_ORDER);
一致するものが見つかった場合は、$arr
入力されます。
たとえば、「times」が見つかったが、前後のテキストがない場合は、1が返さ$arr[0]
れ、「times」のみが含まれます。
したがって、たとえば、$yourStringToSearch
が「5 x 8」を含む場合、次の$arr
ように入力されます(ここ$arr[0]
で、は一致全体、$arr[1]
はプリテキスト、$arr[2]
はポストテキストです)。
Array
(
[0] => Array
(
[0] => 5 times 8
)
[1] => Array
(
[0] => 5
)
[2] => Array
(
[0] => 8
)
)
$yourStringToSearch = "5 _times_ -times- 8"
ただし、返される場合は次の点に注意してください。
Array
(
[0] => Array
(
[0] => 5 _times_ -times- 8
)
[1] => Array
(
[0] => 5 _times_ -
)
[2] => Array
(
[0] => - 8
)
)
つまり、検索文字列がターゲットに複数回表示される場合に何を実行するかを指定するか、検索語の最初の一致が「the」一致である場合は「default」を受け入れる必要があります。 。
検索語がスペースで囲まれていることを確認する必要がある場合は、次の2つが機能します。最初はスペースを「キャプチャ」したくないと想定し、2番目はキャプチャにスペースを含めます。
preg_match_all('/^(.*) times (.*)$/', $yourStringToSearch, $arr, PREG_PATTERN_ORDER);
preg_match_all('/^(.* )times( .*)$/', $yourStringToSearch, $arr, PREG_PATTERN_ORDER);
あなたが何をしようとしているのか完全にはわかりませんが、おそらくこれが役立つでしょう:
explode($ delimiter、$ string、[$ limit])を使用して文字列を分解すると、例として$ delimiterとして「回」があった場合、値として5と8の配列を取得できます。
したがって:
$string = "5 times 8"
$delimiter = " times "
$array = explode($delimiter, $string)
降伏します
$array[0] = 5
$array[1] = 8
お役に立てれば!
substr
次の関数を使用できます: http ://www.php.net/manual/en/function.substr.php
単語の位置がわからない場合は、次を使用strpos
して取得します:http: //php.net /manual/en/function.strpos.php