Отменить отступ print(get_list)
, чтобы он выполнялся после цикла, а не в конце каждого цикла.
я просто сделал бы regex и закончил бы его. если Вы не делаете достаточно повторений, что это становится огромной проблемой производительности, просто легче кодировать (и понять, когда Вы оглядываетесь назад на него)
$text = 'ignore everything except this (text)';
preg_match('#\((.*?)\)#', $text, $match);
print $match[1];
Используйте регулярное выражение:
if( preg_match( '!\(([^\)]+)\)!', $text, $match ) )
$text = $match[1];
Так, на самом деле код, который Вы отправили, не работает: substr()'s
параметры являются $string, $start и $length , и strpos()'s
, параметры $haystack
, $needle
. Немного измененный:
$str = "ignore everything except this (text)"; $start = strpos($str, '('); $end = strpos($str, ')', $start + 1); $length = $end - $start; $result = substr($str, $start + 1, $length - 1);
Некоторая тонкость: Я использовал $start + 1
в параметре смещения для выручения PHP при выполнении эти strpos()
поиск на второй круглой скобке; мы увеличиваем $start
один и уменьшаем $length
для исключения круглых скобок из соответствия.
кроме того, в этом коде нет никакой проверки ошибок: Вы захотите удостовериться $start
, и $end
не делают === лжи прежде, чем работать substr
.
Что касается использования strpos/substr
по сравнению с regex; мудрый производительностью, этот код победит регулярное выражение без всяких усилий. Это немного более многословно все же. Я ем и дышу strpos/substr
, таким образом, я не возражаю против этого слишком много, но кто-то еще может предпочесть компактность regex.