2011-05-04 46 views

回答

0

如果你需要提取的三位數字,那麼這將工作:

/(?<=endofentry)[0-9]{3}(?=\/>)/ 

如:

<?php 

CONST REGEX = "/(?<=endofentry)[0-9]{3}(?=\/>)/"; 
$stringSubject = "endofentry456/>"; 
preg_match(REGEX, $stringSubject, $match); 
echo $match[0]; //echo's 456 

?> 

如果需要更換整個字符串:

更新

<?php 

CONST REGEX = "/\"endofentry\"[0-9]{3}\/>/"; 
$stringSubject = "\"endofentry\"567/>"; 
$stringReplace = "replace_me!"; 
echo preg_replace(REGEX, $stringReplace, $stringSubject); //echo's replace_me! 

?> 
+0

endofentry實際上有雙引號..即「endofentry481」/>更多內容......如果您可以更新第二個代碼段來支持這些雙引號,那真是太棒了,謝謝! – GarethPoole 2011-05-04 18:42:01

+1

很酷,想通了 - ''preg_replace(「/ \」endofentry [0-9] {3} \「\ /> /」,'',$ content);',感謝您的幫助! – GarethPoole 2011-05-04 18:43:20

+0

請參閱修改 – 2011-05-04 18:50:23

2

試試這個:

preg_replace('/endofentry\\d{3}\\/>/', '', 'endofentry321/> asdfa s'); 

測試here

+0

嗯,沒有太多的運氣。實際上有兩個雙引號......即 '「endofentry481」/>更多內容......' 如果你可以更新你的代碼來支持這些雙引號,那真是太棒了! – GarethPoole 2011-05-04 18:38:34

+1

@Gareth添加這些引號的問題是什麼? '%'endofentry \\ d {3}「/>%''是的,就這麼簡單。 @DShook在正則表達式中需要該字符時,最好使用其他分隔符。這樣你不需要逃避它。 – Slava 2011-05-04 18:45:46