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

grey109

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

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

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

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

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

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


Где ошибка?
 

LAMborginy

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

а так?
 

Demiurg

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

grey109

Новичок
LAMborginy

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


Demiurg
ИМХО это проще сделать с помощью регулярного выражения, чем так, как ты предлагаешь. Хотя вполне возможно, что мой способ окажется более медленный. Но это и не важно.
 

Demiurg

Guest
думаешь проще ? проще может было бы, если бы ты понимал регулярные выражения, да и то я не уверен.
 

Falc

Новичок
grey109
$z = preg_replace ('/(.*?name=id value=")(\d+)(">.*)/si', '\\2', $contents);

Почитай про жадность регулярных выражений.
 

Demiurg

Guest
я вот лично никак не могу понять зачем третяя часть в этом регулярном выражении.
 

sergadm

Новичок
если хочешь получить строку
'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;
?>
 
Сверху