文字列の一部を削除するにはどうすればよいですか?
文字列の例: "REGISTER 11223344 here"
"11223344"
上記の文字列の例からどのように削除できますか?
REGISTER here
はデータベースに保存するのでしょうか。
文字列の一部を削除するにはどうすればよいですか?
文字列の例: "REGISTER 11223344 here"
"11223344"
上記の文字列の例からどのように削除できますか?
REGISTER here
はデータベースに保存するのでしょうか。
回答:
特に「11223344」をターゲットにしている場合は、次を使用しますstr_replace
。
// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");
次のように定義されているstr_replace()を使用できます。
str_replace($search, $replace, $subject)
したがって、コードは次のように書くことができます。
$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;
正規表現によるより良いマッチングが必要な場合は、preg_replace()を使用できます。
11223344が一定でないと仮定
$string="REGISTER 11223344 here";
$s = explode(" ",$string);
unset($s[1]);
$s = implode(" ",$s);
print "$s\n";
str_replace(find, replace, string, count)
OPの例に従って:
$Example_string = "REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344', '', $Example_string);
// will leave you with "REGISTER here"
// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ', ' ', $Example_string_PART_REMOVED));
// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces
// will leave you with "REGISTER here"
ルールベースのマッチングが必要な場合は、正規表現を使用する必要があります
$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];
それは最初の数のセットと一致するので、より具体的に試す必要がある場合:
$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];
$match
アレイが不必要に膨張します。かっこを削除してからでアクセスし$match[0]
ます。
substr()は、文字列の一部を返す組み込みのphp関数です。関数substr()は文字列を入力として受け取ります。これは、文字列をトリミングするインデックス形式です。オプションのパラメーターは、部分文字列の長さです。あなたはhttp://php.net/manual/en/function.substr.phpで適切なドキュメントとサンプルコードを見ることができます
注:文字列のインデックスは0から始まります。
動的に、(a)文字列の(a)固定インデックスから(a)部分を削除する場合は、次の関数を使用します。
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/
function removeFromString(string $string, $index, string $delimiter = " "): string
{
$stringParts = explode($delimiter, $string);
// Remove indexes from string parts
if (is_array($index)) {
foreach ($index as $i) {
unset($stringParts[(int)($i)]);
}
} else {
unset($stringParts[(int)($index)]);
}
// Join all parts together and return it
return implode($delimiter, $stringParts);
}
あなたの目的のために:
remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here
その使い方の1つは、コマンドのような文字列を実行することです。これは、その構造を知っています。
次のスニペットは「ここに登録」を出力します
$string = "REGISTER 11223344 here";
$result = preg_replace(
array('/(\d+)/'),
array(''),
$string
);
print_r($result);
preg_replace()APIを使用すると、以下のようになります。
$result = preg_replace(
array('/pattern1/', '/pattern2/'),
array('replace1', 'replace2'),
$input_string
);
preg_replace()
この場合、配列を渡す理由はまったくありません。キャプチャグループを使用するメリットもありません。
以下をせよ
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER(.*)here/','',$string);
これは「REGISTERhere」を返します
または
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER (.*) here/','',$string);
これは「ここに登録」を返します
remove
いますextract
が、対象の文字列をデータベースに格納できるようにするために使用している可能性があります。