Мне нужно найти строку в строке и получить ее часть (без пробелов).
Пример:
This ABC-Code: 12 3 45 Another ABC-Code: 678 9
Теперь я ищу ключевое слово ABC-Code:
и я хочу получить числа после этого (удаление пробелов), поэтому результатом будет:
12345 6789
Я попытался сделать это с помощью substr (), но проблема в том, что предыдущие символы являются переменными. Поэтому я думаю, что мне нужно использовать RegEx, например:
preg_match("#ABC-Code:(.*?)\n#", $line, $match); trim($match); // + remove spaces in the middle of the result
Вам нужно использовать функцию preg_replace_callback
.
$str = <<<EOT This ABC-Code: 12 3 45 Another ABC-Code: 678 9 EOT; echo preg_replace_callback('~.*\bABC-Code:(.*)~', function ($m) { return str_replace(' ', '', $m[1]); }, $str);
Вывод:
12345 6789
Вы можете использовать:
preg_match('#ABC-Code: *([ \d]+)\b#', $line, $match);
И затем используйте:
$num = str_replace(' ', '', $match[1]); // 12345
для вас номера.
Вы все еще можете сделать это с помощью substr:
$string = 'This ABC-Code: 12 3 45'; $search = 'ABC-Code:'; $result = str_replace(' ', '', substr($string, strpos($string, $search) + strlen($search)));
Но регулярное выражение в других ответах, конечно, красивее 🙂