procurar string exata em texto

1,761 views
Skip to first unread message

Beto Lima

unread,
Sep 14, 2011, 3:21:09 PM9/14/11
to LISTA PHP
pessoal existe como procurar uma string exata dentro de um texto?
ja usei strpos mas não ta 100%.

ex:
$pdo_error = 'exception 'PDOException' with message 'SQLSTATE[22P02]:
Invalid text representation: 7 ERROR: invalid input syntax for type
numeric: "55%"' in /public_html/Processar.php:31 Stack trace: #0 /
public_html/sistema/Inserir.php(31) #1{main}';

$procurar = '55%';

$warning = strpos($pdo_error,$procurar);
if ($warning !== false) echo 'ok';

o problema é que se eu passar somente '5' ele também encontra, e isso
que não quero. quero encontrar apenas a palavra exata.

valeu

Tiago Pastorello

unread,
Sep 14, 2011, 3:30:26 PM9/14/11
to list...@googlegroups.com
expressão regular, talvez funcione melhor que strpos().


2011/9/14 Beto Lima <beto...@gmail.com>
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
JQUERY MAGAZINE > http://www.jquerymagazine.com.br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================



--
Tiago Pastorello
Vinteum Desenvolvimento

47 3028 5431
http://vinteum.com

Gaba

unread,
Sep 14, 2011, 3:52:58 PM9/14/11
to list...@googlegroups.com
$procurar = '/55%/';

$warning = preg_match( $procurar, $pdo_error );

if( $warning === 0 ) //preg_match retorna o número de vezes que a Expressão é encontrada...
    
echo 'ok';




2011/9/14 Tiago Pastorello <ti...@vinteum.com>

Beto Lima

unread,
Sep 14, 2011, 4:28:57 PM9/14/11
to list...@googlegroups.com
valeu gente, grato mesmo....

2011/9/14 Gaba <gaba...@gmail.com>:

--
Att.
Beto Lima

Igor Escobar

unread,
Sep 14, 2011, 6:50:43 PM9/14/11
to list...@googlegroups.com
Pra procurar a palavra exata, você precisa usar, além da expressão regular, o matacaracter \b na expressão.


Regards,
Igor Escobar
Software Engineer

+ http://blog.igorescobar.com
+ http://www.igorescobar.com
+ @igorescobar

Igor Escobar

unread,
Sep 14, 2011, 7:03:27 PM9/14/11
to list...@googlegroups.com
Só para agregar...

Se a sua expressão for: /\b55%/ ele vai casar assim:
55% 55 55% 55% qualquerpalavrajunta55%

Do que que está ele vai pegar assim tabém:
55% 55 55% 55% qualquerpalavrajunta55%



Regards,
Igor Escobar
Software Engineer

+ http://blog.igorescobar.com
+ http://www.igorescobar.com
+ @igorescobar






2011/9/14 Igor Escobar <titio...@gmail.com>

Junior Moraes

unread,
Sep 15, 2011, 7:26:11 AM9/15/11
to list...@googlegroups.com
Nada que um /^55%$/ não resolva. =p

[]'s

Igor Escobar

unread,
Sep 15, 2011, 3:51:16 PM9/15/11
to list...@googlegroups.com
Na verdade, para o caso dele, a sua expressão não resolve. Esta expressão procura pelo 55% assumindo que a string terá SOMENTE isso dentro dela quando na verdade ele quer procurar por este código no meio de um texto que pode ter n coisas.

Veja: http://regexpal.com/?flags=&regex=^55%25%24&input=Um%2055%25%20no%20meio%20de%20um%20texto

A expressão não casa.

Regards,
Igor Escobar
Software Engineer

+ http://blog.igorescobar.com
+ http://www.igorescobar.com
+ @igorescobar






2011/9/15 Junior Moraes <junii...@gmail.com>

Beto Lima

unread,
Sep 15, 2011, 4:31:26 PM9/15/11
to list...@googlegroups.com
gente pode ser besteira mas isto poderia se evoluir e realmente ser utilizável?

$replace = array("{","}","'","\"");
$str = 'ERROR: invalid input syntax for type date: "55%" qualquer
outra coisa aqui, bla bla bla';
$str = str_replace($replace,"",$str);

$a_procurar = '55%';

$str_limpa = strstr($str, $a_procurar);
$h = explode(" ",$str_limpa);
if( strlen($h[0]) == strlen($a_procurar) && $a_procurar == $h[0]) {
echo 'A procurar: '.$a_procurar.'<br>';
echo 'Str limpa: '.$h[0].'<br>';
}

--
Att.
Beto Lima

Gaba

unread,
Sep 15, 2011, 4:54:10 PM9/15/11
to list...@googlegroups.com
Você deveria dar uma estudada em Expressões Regulares... são mais rápidas...

Uma combinação de preg_match com preg_replace ficaria melhor aii...

To meio sem tempo agora de fazer mas da uma pesquisada... []'s

2011/9/15 Beto Lima <beto...@gmail.com>

Igor Escobar

unread,
Sep 15, 2011, 4:58:29 PM9/15/11
to list...@googlegroups.com
Conta o que você quer que o teu código faça, fica mais fácil te ajudar. Seu código ta muito confuso. Mas só de olhar o código ja da para ver que com expressão regular você mata.

Beto Lima

unread,
Sep 15, 2011, 5:47:11 PM9/15/11
to list...@googlegroups.com
quero somente uma palavra dentro de um texto.
por exemplo: O rato roeu a roupa do rei de roma.
quero somente a palavra: roeu
Mas das formas anteriores se colocar: roe ou ro também encontra.
vou dar uma estudada mais nos ER.

agradeço a todos.......

Sidney

unread,
Sep 15, 2011, 8:51:18 PM9/15/11
to list...@googlegroups.com
Beto,

O que já te foi passado, ou seja: /\b55%/  funciona corretamente e não pega se buscar só o 5 como você disse.
Ou você pode usar também (se for sempre porcentagem): /\bX\b%/, onde X pode ser um número como 4, ou 45, ou 99...

Sidney



2011/9/15 Beto Lima <beto...@gmail.com>

Beto Lima

unread,
Sep 15, 2011, 10:04:28 PM9/15/11
to list...@googlegroups.com
Sidney valeu cara, acho que eu tinha testado errado, pq antes nao deu
resultado esperado. agora deu certo..
Reply all
Reply to author
Forward
0 new messages