Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tmobilon

Como montar essa URL em str_replace e preg_replace

Recommended Posts

Possuo o seguinte tipo de URL:

 

http://www.mercadolibre.com.pe/jm/pms?site=XXX&id=2021&as_opt=/jm/item?site=MPE$$id=1411202

Essa url é puxada do XML do Mercado Livre.

 

O seguinte código:

case "LINK":  $link .= str_replace("XXX",$afid,$data);   $link = preg_replace("/as_opt=\/jm\//i","as_opt=http://".$url1."/jm/",$link);  $link = trim($link);  break;

substitue o "XXX" por meu ID de afiliado, e insere o endereço "$url1" para completar o link, deixando a url final mais ou menos assim:

 

http://www.mercadolibre.com.pe/jm/pms?site=2304437&id=2021&as_opt=http://www.mercadolibre.com.pe/jm/item?site=MPE$$id=1325474

 

O que preciso fazer é pegar a primeira url, substituir todo o começo dela até a parte "&as_opt=" pela url:

 

http://pmstrk.mercadolivre.com.br/jm/PmsTrk?tool=2304437&go=

e manter o que há depois do "&as_opt=" do jeito que ela já está ficando depois das alterações.

 

O meu maior problema é como faço pra substituir a primeira parte por essa nova URL de traqueamento..

 

Alguém poderia me ajudar a usar estas funções?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi o que você disse, mas ainda estou meio confuso sobre como aplicar isso na prática.Achando a posição do &as_opt= posso apagar ela e tudo o que vem antes.mas veja bem, preciso colocar depois do &as_opt= a variável $url1 que aponta para o domínio correto.O meu problema é como eu faço tudo isso, entendi o que você disse na teoria, mas to meio boiando na prática.Peço desculpas pela ignorância, mas não possuo nenhum curso de programação, o pouco que sei aprendi fuçando, lendo e perguntando ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

é bastante simples veja um exemplo:

 

 

<?php// string$url		   = "http://forum.imasters.com.br/index.php?act=post&do=reply_post&f=3&t=195147";// string que deseja procurar $str_alvo	  = "&do=";// obtém a quantidade de caracteres de $str_alvo$str_alvo_size = strlen($str_alvo);// verifica se existe $str_alvo em $urlif( $qtd = strpos($url, $str_alvo) ) {	// retorna $url da posiçao 0 até o valor de $qtd	$part1	= substr($url ,0 ,$qtd );	// obtém a soma de $part1 + $str_alvo_size	$pos_ini  = ($str_alvo_size + strlen($part1) );	// obtém o restante de $url	$part2	= substr($url ,$pos_ini );	// escreve $url sem a string "$str_alvo"	echo $part1;	echo "<font color=ff0000>";	echo $part2;	echo "</font>";}else{echo "não encontrou <b>".$str_alvo."</b>";}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

nada feito =(

 

eu ultilizei mais ou menos o código do tmferreira, olhe como ficou:

 

#O link é dinâmico, cada produto tem um, porém a estrutura é #basicamente a mesma  $link .= $data;#a parte da url que desejo apagar  $palavra = "&as_opt=";#aqui começa o rolo.#repare que a variável $url1 na verdade indica o domínio do mercado #livre em questão. Ela pode ser "mercadolivre.com.br', #'mercadolibre.com.pe' e assim vai.#O que preciso fazer é colocar a url de trackeamento que especifiquei #como $afid antes de tudo, depois a $url1 e então a continuação do $link #que seta o endereço do produto anunciano.  $num = strpos($link, $palavra) + 8;  $link = $url1 . substr($link, $num, strlen($link) - $num);  $link = trim($link);

Com esse código, a url virou isso:

 

http://tecnoblog.net/e-shop/www.mercadolibre.com.peadolibre.com.pe/jm/item?site=MPE$$id=1344202

A estrutura no final das contas deve ser:

 

$afid.$url.$link

 

O meu grande problema é que preciso tratar a variável link, fazendo -a ficar somente com o final que indica o endereço do produto.

 

Alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tmobilon,

 

à partir do exemplo do Thiago você poderia fazer o restante, pois ele fez de um modo bem simples.

 

o outro exemplo que postei foi feito de um jeito mais prático para fazer adaptações:

 

 

na prática seria isso:

 

<?php// string//$url		   = "http://forum.imasters.com.br/index.php?act=post&do=reply_post&f=3&t=195147";$url		   = "http://www.mercadolibre.com.pe/jm/pms?site=2304437&id=2021&as_opt=http://www.mercadolibre.com.pe/jm/item?site=MPE\$\$id=1325474";// string que deseja procurar // $str_alvo	  = "&do=";$str_alvo	  = "&as_opt=";// string para substituir$str_inc	   = "http://pmstrk.mercadolivre.com.br/jm/PmsTrk?tool=2304437&go=";// obtém a quantidade de caracteres de $str_alvo$str_alvo_size = strlen($str_alvo);// verifica se existe $str_alvo em $urlif( $qtd = strpos($url, $str_alvo) ) {	// retorna $url da posiçao 0 até o valor de $qtd	$part1	= substr($url ,0 ,$qtd );	// obtém a soma de $part1 + $str_alvo_size	$pos_ini  = ($str_alvo_size + strlen($part1) );	// obtém o restante de $url	$part2	= substr($url ,$pos_ini );	// escreve $url sem a string "$str_alvo"	//echo $part1;	echo $str_inc;	echo "<font color=ff0000>";	echo $part2;	echo "</font>";}else{echo "não encontrou <b>".$str_alvo."</b>";}/*http://www.mercadolibre.com.pe/jm/pms?site=2304437&id=2021&as_opt=http://www.mercadolibre.com.pe/jm/item?site=MPE$$id=1325474http://pmstrk.mercadolivre.com.br/jm/PmsTrk?tool=2304437&go=*/?>

 

é isso que você precisava ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tmobilon, à partir do exemplo do Thiago você poderia fazer o restante, pois ele fez de um modo bem simples.o outro exemplo que postei foi feito de um jeito mais prático para fazer adaptações:é isso que você precisava ?

Usei as funções que você citou dessa parte e deu certo! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Precisei dar uma simplificada para encaixar na minha necessidade, mas agora tá tudo resolvido!Agradeço aos amigos! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tmobilion,posta como conseguiu. Quem tiver a mesma dúvida sua já terá a solução...Valeu!

Usei mais ou menos como o henom falou.Veja como ficou:
case "LINK":	$link.=$data;	// string que deseja procurar	$str_alvo= "&as_opt=";	// obtém a quantidade de caracteres de $str_alvo	$str_alvo_size = strlen($str_alvo);	// verifica se existe $str_alvo em $url	$qtd=strpos($link, $str_alvo);	// retorna $url da posiçao 0 até o valor de $qtd	$part1=substr($link ,0 ,$qtd );	// obtém a soma de $part1 + $str_alvo_size	$pos_ini=($str_alvo_size + strlen($part1) );	// obtém o restante de $url	$part2=substr($link ,$pos_ini );	$link=$part2;  break;
Este código trata toda a url e me devolvel apenas o finalzinho dela, que é o código do produto em questão.Mantive os comentários para sempre me lembrar o que cada função faz.Logo para montar o resto do link uso o seguinte:
$afid='URL DE AFILIADO';$pref='/jm/item';echo '<a href="'.$afid.$pref.$link.'">'.$title.'</a>';
Feito!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Agradeço a ajuda e a atenção de vocês! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.