2013-07-01 45 views
0

我必须要改变每PHP图片标签......preg_replace函数图像标签等格式的字符串

这里是源字符串...

'picture number is <img src=get_blob.php?id=77 border=0> howto use' 

的结果应该是这样的

'picture number is #77# howto use' 

我已经测试了很多,但我只得到图像的编号作为结果... 这是我最后的测试...

$content = 'picture number is <img src=get_blob.php?id=77 border=0> howto use'; 
$content = preg_replace('|\<img src=get_blob.php\?id=(\d+)+(border\=0\>)|e', '$1', $content); 

现在$content是77

我希望有人能帮助我

回答

1

几乎是正确的。刚落e标志:

$content = 'picture number is <img src=get_blob.php?id=77 border=0> howto use'; 
$content = preg_replace('/\<img src=get_blob.php\?id=(\d+)+(border\=0\>)/', '#$1#', $content); 
echo $content; 

输出:

picture number is #77# howto use 

有关PHP正则表达式修饰符的详细信息,请参阅documentation

+0

yeahhhh ...它的工作原理......非常感谢你... – Talki

+0

@Talki:疲劳,不过,您正则表达式,因为目前的情况是是_very_特定的。它需要'img'标签包含'border'属性,没有引号和非常具体的url模式('blob.php?id =')。它还需要一个_invalid_'img'标签('>'而不是'/>')!. –

+0

''在HTML中完全有效(不要与XML或XHTML混淆)。结束'/>'成为HTML5上的可选项。 http://stackoverflow.com/questions/7366344/do-we-still-need-end-slashes-in-html5 –

1

不要使用e标志,它不是necessairy对正则表达式的占位符,只是试试这个:

preg_replace('/\<.*\?id\=([0-9]+)[^>]*>/', '#$1#', $string); 

此正则表达式承担id将是src网址的第一个参数,如果这个ISN “T总是会的情况下,使用此:

preg_replace('/\<.*[?&]id\=([0-9]+)[^>]*>/', '#$1#', $string);