Preg替换URL - 附加会员ID

时间:2015-03-19 22:01:51

标签: php regex html-parsing preg-replace

应使用联属会员ID替换易趣链接。因此我使用preg替换。当$ message字符串中只有1个URL时,它可以工作。当$ message字符串中有多于1个URL时,只有第一个URL正在工作。其他网址不会被替换。

$message = preg_replace('/<a(.*)href="(http:\/\/(cgi|www).ebay.*(=|\/)([0-9]{12,})[=\?\/]?[^"]*)"[^<]*<\/a>/Uis', '<a onclick="window.open(this.href); return false;" href="http://rover.ebay.com/rover/1/707-53477-19255-0/1?ff3=4&pub=3454345446&toolid=10001&campid=234342343&customid=&mpre=$2" title="Ebay Article: $5" target="_blank">http://www.ebay.com/itm/$5</a><img style="text-decoration:none;border:0;padding:0;margin:0;" src="http://rover.ebay.com/roverimp/1/707-53477-19255-0/1?ff3=4&pub=3454345446&toolid=10043&campid=345445454&customid=&mpt=[CACHEBUSTER]">', $message);

当我改变

时,我发现了
{12,}

{0,}

所有网址都被替换,但随后是$ 5为空。但我在URL中需要5美元。

有人有想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

当你使用等于{0,}的{​​{1}}时,你可以将整个数字作为可选项,而前一个贪婪的子表达式 - * - 会占用你输入字符串的大部分内容

使用.*(或+)。