preg_match PHP предложения - PullRequest
       4

preg_match PHP предложения

1 голос
/ 27 октября 2011

Я еще не слишком хорош в preg_match, и мне было интересно, кто-нибудь может мне помочь.У меня есть массив значений, например array("black*", "blue", "red", "grey*") Мне нужно найти значения с * в конце, а затем вернуть слово перед ним.

Я считаю, preg_match () - лучший способ сделать это, ноЯ открыт для предложений.

Спасибо заранее!

Ответы [ 3 ]

2 голосов
/ 27 октября 2011

Если вы должны использовать регулярное выражение ...

$words = array_map(function($word) {
   return preg_replace('/\*\z/', '', $word);
}, $arr);

CodePad .

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

$words = array_map(function($word) {
   return rtrim($word, '*');
}, $arr);

CodePad .

Если вы хотите вернуть только слова, которые заканчиваются *, попробуйте что-то вроде этого сначала ...

$words = preg_grep('/\*\z/', $arr);

CodePad .

Единственный недостаток (как упоминалось в комментариях) заключается в том, что PHP будет выполнять итерацию дважды по массиву. Вы можете просто использовать цикл foreach, чтобы выполнить оба этих действия в одном цикле, если хотите.

Также стоит упомянуть, что анонимные функции - это PHP 5.3. Вы все еще можете большую часть этого кода, просто разделив функции на их собственные именованные функции и передав им ссылку.

0 голосов
/ 27 октября 2011

Для этого не нужно использовать preg_match - будет работать простой поиск символов в строке:

$words = array('red*', 'grey', 'white', 'green*');
$return = array();

foreach ($words as $word) {
    if ($word[strlen($word) - 1] === '*') {
        $return[] = substr($word, 0, -1);
    }
}
var_dump($return);
0 голосов
/ 27 октября 2011

Если у вас всегда есть такой массив (т. Е. Нет сложных строк, просто слово *), вам действительно не следует использовать регулярные выражения, это излишество.Используйте строковые функции, такие как strpos для поиска и str_replace или rtrim для удаления *.

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

- из str_replace: руководство

...