preg_replace с точностью до наоборот - PullRequest
0 голосов
/ 10 августа 2010

Я ищу что-то вроде получения противоположного совпадения из этой строки:

$input = "21.asdf*234true;asdf0--11"
$_BOOL_ ="/(true|false)/i";
$output = preg_replace($_BOOL_, '', $input);
//Result: "21.asdf*234;asdf0--11"
//Desired result: "true"

Какой курс в php 5.3 является

$output = preg_filter($_BOOL_, '', $input);

Но я на 5.2 и не знаю, как получить то, что я хочу здесь ... Предложения (кроме компиляции 5.3 на Ubuntu)?

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Ваш пример все еще немного расплывчат.

Если строка содержит EITHER true или false, вывод должен быть "true"?

Если это тот случай, который вы ищете preg_match() Я думаю.

Если вы хотите вернуть либо «true», если строка содержит true, и «false», если она содержит false, я думаю, вам, возможно, придется использовать ряд функций, таких как preg_match () или strpos (), чтобы соответствовать состояние отдельно.

0 голосов
/ 11 августа 2010

Как насчет:

$output = preg_replace($_BOOL_, '', preg_grep($_BOOL_, $input));

РЕДАКТИРОВАТЬ: Глядя на ваш вопрос еще раз, я не уверен, что мы говорим об одном и том же. Для каждой строки во входном массиве preg_replace выполняет любые замены и возвращает результат; любая строка, которая не соответствует регулярному выражению, передается без изменений. preg_filter то же самое, за исключением того, что отбрасывает строки, которые не соответствуют регулярному выражению. Я бы не назвал эти противоположности. Если это не то, что вы ищете, возможно, вы можете привести несколько примеров.

...