• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

djthyrax

[PHP] Breve explicação de como usar o substr() para obter o texto entre 2 chars

6 mensagens neste tópico

Excerto de uma conversa no #p@p onde dei uma breve explicação de como funciona o substr() e como o usar para obter o texto entre 2 caracteres, neste caso < e >.

<NRAM> como retiro a primeira letra e a ultima letra de uma string em php?

<djthyrax> NRAM, dá uma olhada à substr()

<NRAM> djthyrax o substr() retira caracteres < >  ?? ou passa por eles?

<djthyrax> o substr() não olha para os caracteres.

<NRAM> pois

<djthyrax> vai para o coiso de inicio, anda as posições que dizes, e mostra-te o resultado.

<NRAM> eu quero

<NRAM> <202> que retire os <>

<NRAM> e deixe o numero

<djthyrax> man,

<djthyrax> vês a posição do >

<djthyrax> tiras-lhe a posição do <

<djthyrax> e ficas logo a saber quantos caracteres é que ele tem de andar.

<NRAM> tipo  substr($var, ESTE RETIRA QUAL?, ESTE RETIRA QUAL? );

<djthyrax> substr($var, strpos('<', $var), strpos('>', $var)-strpost('<', $var));

<djthyrax> aliás,

<djthyrax> substr($var, strpos('<', $var), strpos('>', $var, strpos('<', $var))-strpost('<', $var)); se tiveres mais que um < ou > na string.

<djthyrax> em principio isto serve NRAM

<djthyrax> substr(texto, posicao no texto onde ele comeca a devolver, quantidade de caracteres a devolver)

<djthyrax> ou seja,

<djthyrax> texto -> $var

<djthyrax> posicao no texto -> strpos('<', $var)

<djthyrax> quantidade de caracteres é a distância entre a posição do < e do >

<djthyrax> logo

<djthyrax> strpos('>', $var)-strpos('<', $var)

<djthyrax> ^ NRAM

<djthyrax> percebeste a explicação?

<NRAM> yes sir.. ;) thanks! ;) XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

What's the point? O manual do PHP explica isso de forma mais simples...

E acho estúpido a forma para se sacar o texto entre < e >. É muito mais simples usar regex.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

What's the point? O manual do PHP explica isso de forma mais simples...

E acho estúpido a forma para se sacar o texto entre < e >. É muito mais simples usar regex.

O < e > são apenas um exemplo, e nem sempre regex é solução. Anyway, ele não tinha lá ido com a página no manual (aliás, não deve é ter lá posto os pés...), daí ter feito esta explicação.

EDIT: Como me vieram moer o juízo por ter simplesmente posto aqui o que escrevi no IRC, quando me lembrar faço algo como deve ser. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não disse que regex era sempre a solução, mas assim à primeira vista, o que me pareceu melhor foi regex porque o código que tu deste é demasiado complexo para uma coisa tão simples. E nem se quer faz sentido usar essas funções só para se sacar o texto entre < e >.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não disse que regex era sempre a solução, mas assim à primeira vista, o que me pareceu melhor foi regex porque o código que tu deste é demasiado complexo para uma coisa tão simples. E nem se quer faz sentido usar essas funções só para se sacar o texto entre < e >.

Sim, neste exemplo, regex era de facto a melhor solução, mas pronto, foi esta que saiu (e sendo para alguém que não sabe regex for sure (que é o caso dele... e meu também), esta era provavelmente a mais simples).
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

regex neste caso não tem nada que saber:

/<(.+)>/

Pronto, já tá... Para o que é, e como já disse, assim à primeira vista, parece-me o indicado e mais simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora