2014-12-30 3 views
-6

Это пример строки: abcde123#ijklmn0pqУдалить символы как слева и справа от строки в PHP

В этой строке мне нужно распечатать только число (123 последовательности), и удалите буквы (как слева, так и справа) и hashtag (#) необходимо удалить.

Хештаг (#) всегда включен в строку.

Хештаг (#) всегда расположен справа от символов, которые необходимо распечатать;

Хештаг (#) всегда расположен слева от символов, которые необходимо удалить;

Таким образом, хэштег (#) может быть использован в качестве руководства, чтобы удалить буквы из правого

Количество символов в начале всегда равно 5 (постоянный) (будет удалено);

Количество символов в средней всегда отличается (переменная) (для печати);

Количество символов в правой всегда отличается (переменная) (будет удалена);

Вот еще одна строка пример, аналогичный первому: [email protected]@$IMPORTANT#=-=whatever

Символы, которые должны быть напечатаны в слово «IMPORTANT»

Как и в первом примере, что на левой стороне hashtag (#) необходимо распечатать, но важно напечатать только слово «IMPORTANT» без специальных символов «!! @@ $».

+6

Просьба поделиться тем, что вы попробовали. –

+1

поэтому регулярное выражение тогда ... как '/ ^. {5,5} (. *) [#]. * $ /' Thats untested, но я бы предположил, что это будет что-то подобное ... – prodigitalson

+0

Привет. Нет необходимости отмечать вопросы, которые были решены - вы можете прокомментировать ответ, если хотите конкретно сказать что-то об этом. Это необязательно, но поощрять другие ответы, которые выглядят так, как они будут работать, поощряются - это хороший способ поблагодарить других пользователей за их усилия. – halfer

ответ

2
$myString = '[email protected]@$IMPORTANT#=-=whatever'; 

$result = substr($myString, 5, -1); 

$pos = strpos($result, '#'); 

$result = substr($result, 0, $pos); 

echo $result; 
0

Плохо это дает удар. похоже довольно простой.

function choppy($choppy) { 

    $nstr = substr($choppy, 5,strlen($choppy)); //chop first 5 
    $pos = strpos($nstr, "#"); //Find the position of the hash tag 

    return substr($nstr, 0, $pos); //we only need the stuff before it... 
} 

echo choppy('[email protected]@$IMPORTANT#=-=whatever'); 
echo "\n"; 
echo choppy('abcde123#ijklmn0pq'); 

Результат

C:\Users\developer\Desktop>php test.php 
IMPORTANT 
123 
0

Другие ответы хороши, но если вам нужен один вкладыш для домашней работы:

$str = '[email protected]@$IMPORTANT#=-=whatever'; 

echo substr($str, 5, strpos($str, '#')-5); //IMPORTANT 
1

Вы можете использовать регулярные выражения с preg_replace();

Если предположить, что строка, которую вы должны обработать хранится в $string:

preg_replace('^.{5}(.*)#.*$', '$1', $string); 

https://www.regex101.com/r/hA8lY7/1

Первый рисунок Объяснение:

  1. ^.{5}: соответствует любому 5 символов после начала от $string
  2. (.*): соответствует любому N символ после (1) до того, как первое вхождение # (первый захват-группа)
  3. #.*$: соответствует # и любой N символ после (2) до конца $string

Второй рисунок объяснение:

  1. $1: заменяет $string с первым захватом-группой согласованной в первом шаблоне
Смежные вопросы