Bir dizenin bir kısmını nasıl kaldırabilirim?
Örnek dize: "REGISTER 11223344 here"
"11223344"Yukarıdaki örnek dizeden nasıl kaldırabilirim ?
REGISTER hereveritabanına kaydetmek ister ?
Bir dizenin bir kısmını nasıl kaldırabilirim?
Örnek dize: "REGISTER 11223344 here"
"11223344"Yukarıdaki örnek dizeden nasıl kaldırabilirim ?
REGISTER hereveritabanına kaydetmek ister ?
Yanıtlar:
Özellikle "11223344" ü hedefliyorsanız, şunu kullanın str_replace:
// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");
Şu şekilde tanımlanan str_replace () yöntemini kullanabilirsiniz :
str_replace($search, $replace, $subject)
Böylece kodu şöyle yazabilirsiniz:
$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;
Normal ifadelerle daha iyi eşleşmeye ihtiyacınız varsa preg_replace () öğesini kullanabilirsiniz .
11223344'ün sabit olmadığı varsayılarak
$string="REGISTER 11223344 here";
$s = explode(" ",$string);
unset($s[1]);
$s = implode(" ",$s);
print "$s\n";
str_replace(find, replace, string, count)
OP örneğine göre:
$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"
Kural tabanlı eşleşmeye ihtiyacınız olduğunda normal ifade kullanmanız gerekir
$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];
Bu, ilk sayı kümesiyle eşleşecektir, bu nedenle daha spesifik olmanız gerekiyorsa:
$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];
$matchdiziyi gereksiz yere şişirir . Parantezleri kaldırın ve ardından erişim sağlayın $match[0].
substr (), bir dizenin bir kısmını döndüren yerleşik bir php işlevidir. Substr () işlevi, dizeyi kırpılmasını istediğiniz dizin formu olarak giriş olarak alır. ve isteğe bağlı bir parametre alt dizenin uzunluğudur. Uygun belgeleri ve örnek kodu http://php.net/manual/en/function.substr.php adresinde görebilirsiniz.
NOT: bir dizenin dizini 0 ile başlar.
Dinamik olarak, bir dizenin (a) sabit dizininden (a) parçalarını kaldırmak istiyorsanız, bu işlevi kullanın:
/**
* 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);
}
Amacınız için:
remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here
Kullanımlarından biri, yapılarını bildiğiniz komut benzeri dizeleri yürütmektir.
Aşağıdaki kod parçası "buraya KAYIT OL" yazdıracak
$string = "REGISTER 11223344 here";
$result = preg_replace(
array('/(\d+)/'),
array(''),
$string
);
print_r($result);
Preg_replace () API'sı bizi aşağıda verildiği gibi kullanır.
$result = preg_replace(
array('/pattern1/', '/pattern2/'),
array('replace1', 'replace2'),
$input_string
);
preg_replace()Bu durumda dizileri aktarmak için kesinlikle hiçbir neden yoktur . Ayrıca bir yakalama grubu kullanmanın herhangi bir yararı yoktur.
Aşağıdakileri yapın
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER(.*)here/','',$string);
Bu, "KAYIT OL" ifadesini döndürür
veya
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER (.*) here/','',$string);
Bu, "KAYIT OL" ifadesini döndürür
remove, ancakextracthedeflenen dizenin veritabanında depolanabileceği anlamına geliyor gibi görünüyor .