Регулярное выражение работает как-то не так

  • Автор темы Автор темы grey109
  • Дата начала Дата начала

grey109

Новичок
Регулярное выражение работает как-то не так

Есть строка: fdffsdfdfdname=id value="123">ggdgfgfdgfd

Нужно из этой строки вырезать число 123.

Я делаю это так:

$z = preg_replace ('/(.*?name=id value=")(\d+)(">.*?)/si', '\\2', $contents);

Результат:
123
ggdgfgfdgfd


Где ошибка?
 
$z = preg_replace ('/(.*?name=id value=")([^"]+)(">.*?)/si', '\\2', $contents);

а так?
 
зачем тебе регулярное выражение ?
находишь name=id value="
потои " после неё.
 
LAMborginy

Тоже самое :-(


Demiurg
ИМХО это проще сделать с помощью регулярного выражения, чем так, как ты предлагаешь. Хотя вполне возможно, что мой способ окажется более медленный. Но это и не важно.
 
думаешь проще ? проще может было бы, если бы ты понимал регулярные выражения, да и то я не уверен.
 
grey109
$z = preg_replace ('/(.*?name=id value=")(\d+)(">.*)/si', '\\2', $contents);

Почитай про жадность регулярных выражений.
 
я вот лично никак не могу понять зачем третяя часть в этом регулярном выражении.
 
если хочешь получить строку
'fdffsdfdfdname=id value="">ggdgfgfdgfd' ()то это так
или скажи что именно тебе надо получить в результате
<?php
$str='fdffsdfdfdname=id value="123">ggdgfgfdgfd';
$sh="/name=id value=\"(\d+)\">/";
$za="name=id value=\"\"";
$str=preg_replace($sh, $za, $str);
echo $str;
?>
 
Сверху