2010-02-03 4 views
100

Как урезать часть строки и сохранить ее в определенной строке в MySQL с помощью PHP?Как удалить часть строки?

Пример строки: "REGISTER 11223344 here"

Как я могу удалить "11223344" из примера строки?

+0

Какой язык программирования это? –

+23

говорит PHP в сообщении. –

+1

@siddharth - какой вывод вы хотите? –

ответ

19

при условии, 11223344 не является постоянной

$string="REGISTER 11223344 here"; 
$s = explode(" ",$string); 
unset($s[1]); 
$s = implode(" ",$s); 
print "$s\n"; 
+1

Это даст ему '11223344', который (я думаю) обратный к тому, что он хочет. –

+1

Как так? Он отключает индекс массива, который * содержит * «11223344». –

+1

Я сделал корректировки после комментариев Доминика. – ghostdog74

131

Если вы специально пристреливать "11223344", а затем использовать str_replace:

echo str_replace("11223344", "", "REGISTER 11223344 here"); 
14

Выполните следующие действия

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER(.*)here/','',$string); 

Это вернется "РЕГИСТРАЦИЯ"

или

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER (.*) here/','',$string); 

Это вернет "РЕЕСТР здесь"

+3

Не вернет ли он «REGISTER__here», с двумя пробелами (подумайте, что подчеркивание как пробелы, комментарий не позволит мне два последующих пробела)? Избегайте пробелов до и после «(. *)». – TechNyquist

5

SUBSTR() является встроенной функцией PHP, которая возвращает часть строки. Функция substr() примет строку как входную, форму индекса, где вы хотите, чтобы строка была обрезана. а необязательным параметром является длина подстроки. Вы можете увидеть надлежащую документацию и примеры кода на http://php.net/manual/en/function.substr.php

Примечание: индекс строки начинается с 0.

78

Вы можете использовать str_replace(), который определяется как:

str_replace($search, $replace, $subject) 

Таким образом, вы могли бы написать код как:

$subject = 'REGISTER 11223344 here' ; 
$search = '11223344' ; 
$trimmed = str_replace($search, '', $subject) ; 
echo $trimmed ; 

Если вам необходимо лучшее согласование с помощью регулярных выражений, которые вы можете использовать preg_replace().

+1

Если требуется сопоставление регулярных выражений, есть также preg_replace() http://us2.php.net/manual/en/function.preg-replace.php –

5

Когда вам нужно правило соответствия на основе, вам нужно использовать регулярное выражение

$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]; 
+0

preg_replace() было бы намного проще, не так ли? http://us2.php.net/manual/en/function.preg-replace.php –

+0

@ElijahLynn replace требует, чтобы вы удаляли вещи, будущие изменения или шум прерывались. Выполнение этого с помощью _replace, но _match будет продолжать работать. – TravisO

-1

если вы хотите удалить часть строки из заданной строки , это может помочь вам

chop($string,'part_of_string'); 
+4

'chop' - это псевдоним' rtrim', который этого не делает - см. Http://php.net/rtrim. –

+0

Да, это не сработает. str_replace(), вероятно, самый чистый. http://stackoverflow.com/a/2192329/292408 –

0

Вы тоже можете это сделать, если вам нравятся другие способы ...

function str_substract($remove, $subject){ 
    $strpos = strpos($subject, $remove); 
    return substr($subject, 0, $strpos) . substr($subject, $strpos + strlen($remove)); 
} 

$str = "Hello, world. This is amazing"; 
print str_substract('rld', $str); 

/* Outputs: */ 
"Hello, wo. This is amazing" 
0

Динамически, если вы хотите, чтобы удалить часть (ы) с фиксированным индексом (ами) строки, используйте эту функцию:

/* 
* Remove index/indexes from a string, delimited by a space (or something else). 
* First, divides the string by delimiter and holds divided parts as an array. 
* If $index is an array, it removes all indexes of the divided string; 
* otherwise (i.e. has an int value), it removes just that index of the string. 
* At last, it joins all string parts together and return it as a string. 
* Note: If you want to use this function in PHP5, remove scalar type hints 
* (i.e. keywords before function arguments). 
*/ 
function remove_from_str($index, string $str, string $delimiter = " "): string 
{ 
    // String parts 
    $strParts = explode($delimiter, $str); 

    // Remove indexes from string parts 
    if (is_array($index)) 
     foreach ($index as $i) 
      $strParts[(int)$i] = null; 
    else 
     $strParts[(int)$index] = null; 

    // Remove null values, to prevent duplicating delimiter 
    $strParts = array_filter($strParts); 

    // Join all parts together and return it 
    return implode($delimiter, $strParts); 
} 

Для вашей цели:

remove_from_str(1, "REGISTER 11223344 here"); 
// Output: REGISTER here 

Одним из его способов использования является выполнение команд, которые вы знаете о его структуре.

Смежные вопросы