← Desenvolvimento

Ajuda sobre PHP!!

Lida 5685 vezes

Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

Alguem consegue me explicar como utilizar os simbolos da função preg_match(); ??
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Espera que o morpheus the master of php venha e ele explica-te tudinho :P
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

olha o officer a pôr o fardo da responsabilidade em cima dos meus ombros! :lol:

kingless, deixa-me perguntar-te uma coisa antes: o que estás a tentar fazer com o preg_match? é que é uma função um bocado avançada e delicada e, na maior parte das vezes, existem meios mais simples e viáveis!

além do que, se fosse a explicar todas as possibilidades, ficavamos aqui uma tarde inteira... ;)
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Não quis estar a abrir um novo tópico sobre php, de modo que encontrei este em que o título se adapta bastante bem ao assunto.

Preciso que alguem me ajude com uma parte de código php que preciso implementar no meu site, não digo urgentemente (embora o seja lol) mas agradecia imenso uma certa brevidade na resposta.

O que eu quero fazer utiliza o eregi_replace e é bastante similar ao utilizado para substituir um texto por um link.
Ora o que eu preciso é de um eregi_replace que substitua todos os números de 0 a 9, até aqui tudo bem, só que apenas quero essa substituição quando o número total de dígitos for igual ou superior a seis e quando essa sequencia de números começar pelo caracter +.

Seguidamente o que pretendo é que isso retorne com um link especial, não é um link que se possa utilizar na web atravez do PC visto que não funcionará, mas sim um link utilizado no wap que permite fazer uma chamada telefónica. o resultado de um link assim será isto:

<a href="wtai://wp/mc;+123456789">[Call Number]</a>

Alguem que me possa sulucionar isto?

Desde já muito obrigado.
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Citação de: "morpheus"
olha o officer a pôr o fardo da responsabilidade em cima dos meus ombros! :lol:


Tu é que és o professor aqui  :lol:

 :roll:
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

=IceBurn=, talvez te seja mais fácil usar duas linhas para isso:

- para contar o tamanho:

Código: [Seleccione]
$count=strlen("$telefone");

e, depois de um if, para substituir:

Código: [Seleccione]
$telefone=str_replace("TERMO_A_SUBSTITUIR","TERMO_NOVO", $telefone);

pelo que eu percebi, é mais fácil assim. ;)
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

Citação de: "OFFICER"
Tu é que és o professor aqui  :lol:


professor! :lol: :lol: :P
Offline

fpware 
Fundador
Mensagens 15318 Gostos 6
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Grande morpheus O Professor!  :D
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Citação de: "morpheus"
=IceBurn=, talvez te seja mais fácil usar duas linhas para isso:

- para contar o tamanho:

Código: [Seleccione]
$count=strlen("$telefone");

e, depois de um if, para substituir:

Código: [Seleccione]
$telefone=str_replace("TERMO_A_SUBSTITUIR","TERMO_NOVO", $telefone);

pelo que eu percebi, é mais fácil assim. ;)


Desde já obrigado pela atenção.
Utilizar o strlen e o str_replace seria o ideal para utilizar no preenchimento de um formulário por exemplo, só que no meu caso tenho que sacar a informação do número de telefone a partir de um texto (obtido de uma só variável) que que pode ter mais de 200 caracteres, pois o que eu necessito é de utilizar esta função numa sala de chat wap.

É por isso que preciso de utilizar o eregi_replace, pelo menos eu penso que tenha de ser assim, talvez esteja enganado...

Para tornar isto mais simples tou a pensar usar assim:

Código: [Seleccione]
$udata[2] = eregi_replace('([[:space:]()[{}])(+[0-9])','\\1<a href="wtai://wp/mc;\\2">[Call Nr]</a>\\2', $udata[2]);

Ainda não testei. Achas que tem algum erro?
Obrigado.
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Não funcionou como eu escrevi :(
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

consegues me dar um exemplo dessa tua variável onde está o nºo de telefone?
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Morpheus, ja tou quase lá, fiz assim:

Código: [Seleccione]
$udata[2] = ereg_replace('([+][0-9])','<a href="wtai://wp/mc;\\0">[call nr]</a>\\0', $udata[2]);

O problema é que me aparece apenas o primeiro dígito depois do +, tipo se o nr for +123456789 só me vai aparecer um link com +1.
Como é que eu posso resolver isto?

O nr de telefone é extraido do texto que o utilizador escreve na sala de chat, ou seja ele pode escrever:

 BLA BLA BLA BLA +123456789 BLA BLA BLA (lol)

e no meio disto tudo quero que o ereg_replace me reconheça o número iniciado com o caracter + e que o transforme num link.
Seguindo o exemplo o código wml ficaria assim:
 
Código: [Seleccione]
<a href="wtai://wp/mc;+123456789">[Call Nr]</a>+123456789
Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

O codigo que estas a tentar criar não está correcto  e não vai dar certo  :wink:

Será que podias mostrar todo codigo deste script em vez de mostrar so essa parte ?
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Kingless, o código é enorme!!
 
De qualquer maneira utilizo um código para evitar que certos utilizadores utilizem o chat para fazer publicidade abusiva a outros sites, aqui vai o exerto:
 
Código: [Seleccione]
$udata[2]=htmlspecialchars($udata[2]);

$udata[2] = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','LiveChat - The Right Place To Be! :)', $udata[2]);
       
$udata[2] = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','LiveChat - The Right Place To Be! :)', $udata[2]);


A nova parte de código que quero implementar vem imediatamente depois.

Alguma sugestão?
Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

Ess codigo não tem nada demais, sem eu ver o codigo completo vai ser impossivel

tenta colocar o codigo completo aqui  http://pastebin.com e depois me das o link

Se mostrasses o link do site  onde está esse "LiveChat" tambem ajudava  

:wink: