preg_replace: не разберусь

Статус
В этой теме нельзя размещать новые ответы.

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
пытаюсь выдернуть из option`s
HTML:
<option>100</option>
  <option>200</option>
  <option>50</option>
  <option>80</option>
  <option>90</option>
  <option>A1</option>
значения (100, 200 ...)

выражением:
PHP:
$html = "<option>100</option>
  <option>200</option>
  <option>50</option>
  <option>80</option>
  <option>90</option>
  <option>A1</option>"

$arr_marki = preg_replace('#^(.*)<option>(.*?)</option>(.*)#is', '$2',$html);  // выдергиваем все значения option

print_r ($arr_marki);

Выдает: A1

Как это?)

Почему только последнее значение?
 
1. (.*) - все символы, те. оно из вашей строки вырезает все до последнего совпадения
2. Вам нужно разбить на строки вашу строку, и обработать данные в цикле
3. Для того чтобы легче было с регулярками рекомендую использовать прогу RegexBuddy (бесплатная), с ней намного проще с регулярками работать
 
пытаюсь выдернуть из option`s
HTML:
<option>100</option>
  <option>200</option>
  <option>50</option>
  <option>80</option>
  <option>90</option>
  <option>A1</option>
значения (100, 200 ...)
выражением:
PHP:
$html = "<option>100</option>
  <option>200</option>
  <option>50</option>
  <option>80</option>
  <option>90</option>
  <option>A1</option>"
$arr_marki = preg_replace('#^(.*)<option>(.*?)</option>(.*)#is', '$2',$html);  // выдергиваем все значения option
print_r ($arr_marki);
Выдает: A1
Как это?)
Почему только последнее значение?
Это называется жадностью .* - захватит Максимальное количество, те например шаблон
<option>.*</option> найдёт <option>, будет искать дальше найдёт <option>100</option> , но пойдёт дальше, ведь <option>100</option>
<option>200</option> тоже подходит!..

Вообще стоит задача выдернуть эти значения или же оставить их в виде списка. Если первое то
preg_match_all('#<option>(.*?)</option>#is', $html, $option_preg);
в $option_preg[1] будут все нужные числа
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху