2015-03-19 2 views
0

Ebay ссылки должны быть заменены аффилированным ID. Поэтому я использую замену preg. Он работает, когда в строке $ message есть только 1 URL. Когда в строке $ message больше 1 URL-адреса, работает только первый URL-адрес. Другие URL-адреса не заменяются.Preg заменить URL-адрес присоединенного филиала ID

$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,} 

все URL's заменены, но это $ 5 пустым. Но мне нужно это $ 5 в URL.

У кого-то есть идея?

спасибо

ответ

0

При использовании {0,}, равный *, вы сделаете все это число не обязательно, а предыдущее жадное Подвыражение - .* - съедает большую часть вашей входной строки.

Использовать + (или {1,}).

+0

большое спасибо за ваш быстрый ответ. Когда я использую «+», ни один URL не заменяется. Когда я использую {1,}, первый и последний заменяются, но не посередине. Спасибо за дополнительную помощь. – labu77

+0

Для получения дополнительной информации, пожалуйста, укажите примерную строку ввода с требуемым выходом. –

Смежные вопросы