Jump to content

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


djthyrax
 Share

Recommended Posts

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

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Guest id194

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.

Link to comment
Share on other 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. 😉

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Guest id194

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 >.

Link to comment
Share on other 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).

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Guest id194

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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.