Как получить определенную строку из другой строки с помощью php? - PullRequest
0 голосов
/ 04 августа 2011

У меня есть строка вроде «Вы можете выиграть сегодня вечером 200 000 долларов. Зарегистрируйтесь сейчас!»

Там, где приз меняется от строки к строке, поэтому я должен сделать это как-то с помощью php regex или чего-то подобного.

Как получить только это значение из этой строки с помощью php?

Существует ли простая функция регулярных выражений?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Вы ищете preg_match, я думаю:

 preg_match("/\$[\d\,]+/", "You can win tonight $200,000. Sign up now!", $matches);
 # $matches[0] will be "$200.000"

Разбивка:
Регулярное выражение ищет знак доллара (который имеет особое значение в регулярных выражениях, поэтому мы избегаем его с обратной косой чертой, поэтому он воспринимается как буквальный знак доллара), за которым следуют 1 или более цифр (0-9) и запятых.

Обратите внимание, что если preg_match само возвращает false, то это потому, что строка не соответствует регулярному выражению, и в этом случае не будет $match[0] для чтения

0 голосов
/ 04 августа 2011

Я вижу два способа сделать это: вы можете использовать регулярные выражения (медленнее) или взрываться (быстрее, но менее точно). Преимущество состоит в том, что, если кто-то удаляет пробелы из строки, RegEx все равно будет работать, а разрыв может внезапно прерваться.

$src = "You can win tonight $200,000. Sign up now!";
function get_amount($from){
  $src_tkns = explode(' ', $from);
  foreach($src_tkns as $tkn){
    if(substr($tkn, 0, 1)==='$'){
      return (substr($tkn, -1, 1)=='.')?substr($tkn, 0, -1):$tkn;
    }
  }
  return false;
}

function get_amount_regex($from){
  $r = '/\$[-+]?[0-9]*(\,?[0-9]+)+/';
  preg_match_all($r, $from, $res);
  return is_array($res)?$res[0][0]:false;
}

print('Found: '.get_amount($src).'<br />');
print('Regex Found: '.get_amount_regex($src));

Подробнее о регулярных выражениях и их использовании на странице PHP PCRE по адресу http://www.php.net/manual/en/book.pcre.php и на информационном сайте регулярных выражений по адресу http://www.regular -expressions.info / tutorial.html

Стоит отметить, что приведенный выше код не является оптимальным или все ловит, когда дело доходит до ошибок. Убедитесь, что вы выполняете тесты с известными действительными и недопустимыми строками, прежде чем использовать их для какой-либо критической работы:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...