0

Pegar conteudo dentro de um (' ') com preg match

criado por Fernando Ferenz em 06/11/2010 11:32am
ola tenho a pagina q tem este codigo na fonte <a href="javascript:void(0);" onclick="_editUser('FRUS0106045294\x2FUS0101392167', 'lauren.xocolathi@hotmail.com', '', '', '# Gαbiiн hιltoи', '.♥', true, 'f3');FriendGroupsSection.hideNewGroupDiv(0);; return false;" class="btn">

quero pegar somente o email q esta ali to usando esta função :

for ($s = 0; $s < 1; $s++){ //isso repete uma ves só
$dados = cURL("http://www.orkut.com.br/Main#ShowFriends?show=all&pno=1",0,$cookie,null);
preg_match_all('/ \'(.*\@.*\.[a-z-A-Z.]+)\', \'\'/i',$dados,$uid, PREG_SET_ORDER);
foreach($uid as $val){ //retorna valor do preg
$uid = $val[1];
echo "<center><font face='verdana' size='2'>".$uid." - Okey";

Porem não aparece nada fica em branco depois de caregar sera q tem algo de errado com o preg match all ?

Lista de Respostas:

+1
06/11/2010 5:34pm
(~13 anos atrás)
Giovanni Ramos respondeu:
eaÊ Fernando...blz.
Olha eu denovo com outra solução.
Segue expressão, com ela você casará um email, em qualquer string.

preg_match_all('/([[:alpha:]_.]+@[[:alpha:]-.]+\.[[:alpha:]]{2,4})/i', $dados, $uid, PREG_SET_ORDER);

+1
07/11/2010 10:25am
(~13 anos atrás)
Giovanni Ramos respondeu:
opa... tente isso.
no lugar do "[:alpha:]" altere para "[:alnum:]"

+1
12/11/2010 10:03pm
(~13 anos atrás)
Alias, se você conhece o valor que está dentro do atributo onclick, nem precisa de expressão regular. Você sabe que o valor do onclick tem vários valores separados por aspas simples e quer o segundo valor. Basta localizar onde estão as aspas e obter o valor da substring:

$txt = <<<TXT
_editUser('FRUS0106045294\x2FUS0101392167', 'lauren.xocolathi@hotmail.com', '', ...
TXT;

$pos1 = strpos($txt, "'", 0);
$pos2 =	strpos($txt, "'", $pos1 + 1);
$pos3 = strpos($txt, "'", $pos2 + 1);
$pos4 = strpos($txt, "'", $pos3 + 1);

$email = substr($txt, $pos3 + 1, $pos4 - $pos3 - 1);
var_dump($pos1, $pos2, $pos3, $pos4, $email);

0
06/11/2010 7:07pm
(~13 anos atrás)
Fernando Ferenz respondeu:
vio mas ele ta retornando só o meu email olha fernando.ferenz@gmail.com - Okey
fernando.ferenz@gmail.com - Okey
fernando.ferenz@gmail.com - Okey

teria q retornar emails diferentes

vo pasar a função completa pra vc dar uma olhada

<?
function lol() {
function cURL($url,$header,$cookie,$p) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_NOBODY, $header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
if($p){
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
};
$result = curl_exec($ch);
curl_close($ch);
if($result){
return $result;
}else{
};
};
$l = $_POST['login'];
$p = $_POST['senha'];
$auth = cURL("https://www.google.com/accounts/ClientLogin?Email=".$l."&skipvpage=true&service=orkut&Passwd=".$p,0 , null, null);
$auth = explode("\nAuth=", $auth);
$auth = $auth[1];
$cookie = cURL("http://www.orkut.com.br/RedirLogin?auth=" .$auth,1, null, null);
$PT = "/Set-Cookie:(.*):; Domain=www.orkut.com.br; Path=\/; HttpOnly/i";
preg_match($PT, $cookie, $cookiu);
$cookie= $cookiu[1].":";
$scrap = cURL("http://www.orkut.com.br/Scrapbook.aspx", null, $cookie, null);
preg_match_all('/value="([a-z0-9\+\/\=]{20,})"/i', $scrap, $postsig, PREG_SET_ORDER);
$joins = "http://www.orkut.com.br/Scrapbook.aspx";
$postsigs = "&POST_TOKEN=".$postsig[0][1]."&signature=".rawurlencode($postsig[1][1]);
$r = curl($joins, 0, $cookie, $joins);
$pos = strpos($r, "Moved Temporarily");
if ($pos === false){
for ($s = 0; $s < 3; $s++){


$dados = cURL("http://www.orkut.com.br/Main#ShowFriends?show=all&pno=1",0,$cookie,null);

preg_match_all('/([[:alpha:]_.]+@[[:alpha:]-.]+\.[[:alpha:]]{2,4})/i',$dados,$uid, PREG_SET_ORDER);


foreach($uid as $val)
{

$uid = $val[1];
echo "<center><font face='verdana' size='2'>".$uid." - Okey";

echo "</font><br></center>";
ob_flush();
flush();
sleep(1);
}
}
}else{
print ('<center> Erro de login/senha </center><br>');
}
};
if (isset($_POST['login'])){
lol();
}else{
?>
<html>
<head>
<title>Recusa Friends</title>
<style type="text/css">
<!--
.style1 {font-size: 36px;font-family: "Comic Sans MS";font-weight: bold;color: blue;}
.style2 {font-size: 14px;font-family: "Comic Sans MS";font-weight: bold;color: blue;}
-->
</style>
</head>
<body>
<center>
<form method="post">
<p align="center" class="style1">Recusa Friends<div align="center">
</p>
<br/>
<div align="center">
<table width="26%" border="0">
<tr>
<td width="21%"><span class="style2">Email:</span></td>
<td width="79%">
<input type="text" name="login">
</td>
</tr>
<tr>
<td class="style2">Senha:</td>
<td>
<input type="password" name="senha">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="Submit" value="Come&ccedil;ar">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
<?
}
?>

0
07/11/2010 10:40pm
(~13 anos atrás)
Fernando Ferenz respondeu:
vlw vo tentar qualquer erro volto aqui sarnia mas axo q agora vai da pq antes aparecia so o email da fonte e a fonte é iframe aew nul pega porcima aew axo q funfa amnha falo se funfa

0
08/11/2010 6:50am
(~13 anos atrás)
Fernando Ferenz respondeu:
tipo só ta aparecendo um monte de email mas so meu fernando.ferenz@gmail.com - Okey
fernando.ferenz@gmail.com - Okey
fernando.ferenz@gmail.com - Okey

e tem emails de varias pessoas tipo sera q num é asim tipo essa função abaixo deve funcinar mas ela não esta retornando os emails fica em branco sera q num é o foreach?

<?php
if(isset($_POST['login'])){
$a = new mail;
$login=$_POST["login"];
$login=explode("\n",$login);
$orkut = new Orkut;
foreach($login as $logi)
{
flush();
list($email,$senha) = explode(":", $logi);
$senha = str_replace(array('\n','\r'),'',$senha);
$orkut -> login = $email;
$orkut -> senha = $senha;
if($orkut -> login()) {
if($orkut -> getToken()) {
$uids = Array();
$x = 1;
while(true)
{
flush();
$y = $orkut->cURL("GET", "http://www.orkut.com.br/ShowFriends.aspx?pno=$x&show=all");
$x = $x+1;
preg_match_all('/ \'(.*\@.*\.[a-z-A-Z.]+)\', \'\'/i', $y, $p);
if($p[1][0] == $uids[0] || empty($p[0][0])) break;
foreach($p[1] as $mail) {
flush();
echo '<p class=\'a\'>';
$a -> mail = $mail;
echo "</p>";
$uids[]=$mail;
}
}
echo '</p>';
}
}
}
}
else
{
?>

0
12/11/2010 9:53pm
(~13 anos atrás)
Sugiro o seguinte:


  1. Abrir o documento HTML com DOM (http://br.php.net/manual/pt_BR/domdocument.loadhtml.php)

  2. Percorrer os elementos desejados (getElementsByTagName).

  3. Percorrer os atributos desejados (getAttribute).

  4. Converter as entities do valor do atributo (html_entity_decode).

  5. Montar uma expressão mais exata para obter e-mail (veja a sintaxe em http://en.wikipedia.org/wiki/Email_address#Syntax).


0

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)