PDA

Просмотр полной версии : preg_match_all подскажите


Adekvatnyj
17.11.2009, 17:14
есть строка
<tr><td>e10bb0c3fb</td><td><font color=black>
Как настроить preg_match_all , чтоб с нее парсилось только то что между <tr><td> и </td><td><font color=black>
и шло в переменную...

LStr1ke
17.11.2009, 17:21
<?php
$str = "<tr><td>e10bb0c3fb</td><td><font color=black>";
preg_match_all("#<tr><td>(.*)</td><td><font color=black>#i",$str,$out);
echo $out[0][0];
?>

-=lebed=-
17.11.2009, 17:25
есть строка
<tr><td>e10bb0c3fb</td><td><font color=black>
Как настроить preg_match_all , чтоб с нее парсилось только то что между <tr><td> и </td><td><font color=black>
и шло в переменную...


$pattern='/<tr><td>(.+)<\/td><td><font color=black>/s'

Adekvatnyj
17.11.2009, 17:35
$str2 = $m[0][0];
preg_match_all("#<tr><td>(.*)</td><td><font color=black>#i",$str2,$code);
echo $code[0][0];
$codo=$code[0][0];
if ($codo) {
$file=fopen("invite.txt","r+");
$str = "$codo";
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $str);
}
fclose ($file);
}
Не работает... Выводит тот же <tr><td>e10bb0c3fb</td><td><font color=black>

LStr1ke
17.11.2009, 17:39
Сделай
print_r($code); вместо echo $code[0][0];
и напиши сюда результат

Deathdreams
17.11.2009, 17:39
LStr1ke
Опередил :)

Adekvatnyj
17.11.2009, 17:41
Array ( [0] => Array ( [0] => e10bb0c3fb ) [1] => Array ( [0] => e10bb0c3fb ) )

LStr1ke
17.11.2009, 17:46
Ну тогда все правильно
$code[0][0];
Просто в твоем коде между [0][0] стоит пробел ) Убери его

Adekvatnyj
17.11.2009, 17:46
Как преобразовать масив в 1 переменную?

Deathdreams
17.11.2009, 17:47
Как преобразовать масив в 1 переменную?
$var = $code[0][0];


:D

Adekvatnyj
17.11.2009, 17:52
$str2 = $m[0][0];
preg_match_all("#<tr><td>(.*)</td><td><font color=black>#",$str2,$code);
echo $code[0][0]\n;
$var=$code[0][0];
echo $var;
if ($var) {
$file=fopen("invite.txt","r+");
$str = "$codo";
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $str);
}
fclose ($file);
}
Результат:
<tr><td>e10bb0c3fb</td><td><font color=black><tr><td>e10bb0c3fb</td><td><font color=black>
Как мне сделать чтоб был результат без <tr><td> и </td><td><font color=black>

Adekvatnyj
17.11.2009, 17:53
Ну тогда все правильно
$code[0][0];
Просто в твоем коде между [0][0] стоит пробел ) Убери его
где

Deathdreams
17.11.2009, 18:03
$str2 = $m[0][0];
preg_match_all("#<tr><td>(.*)</td><td><font color=black>#",$str2,$code);
echo $code[0][0]\n;
$var=$code[0][0];
echo $var;
if ($var) {
$file=fopen("invite.txt","r+");
$str = "$codo";
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $str);
}
fclose ($file);
}
Результат:
<tr><td>e10bb0c3fb</td><td><font color=black><tr><td>e10bb0c3fb</td><td><font color=black>
Как мне сделать чтоб был результат без <tr><td> и </td><td><font color=black>

Что вот это такое : echo $code[0][0]\n; ?



if(preg_match_all("#<tr><td>(.*)</td><td><font color=black>#", $m[0][0], $code)){

$var = $code[0][0];
if (!empty($var)) {

$file = @fopen("invite.txt","a");

if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $var );
}
fclose ($file);
}

}else{ echo 'страница не спарсилась'; }

b3
17.11.2009, 19:03
$str = "$codo";
Жги есчо))))

Можно код существенно сократить


<?php
$str = "
<tr><td>Инвайт 1-й</td><td><font color=black>
<tr><td>Инвайт 2-й</td><td><font color=black>
<tr><td>Инвайт 3-й</td><td><font color=black>
<tr><td>Инвайт 4-й</td><td><font color=black>
<tr><td>Инвайт 5-й</td><td><font color=black>
<tr><td>Инвайт 6-й</td><td><font color=black>
";


if(preg_match_all("#<tr><td>(.*)</td><td><font color=black>#i", $str, $matches))
{

foreach ($matches[1] as $string) {
echo $string.'<br>';
file_put_contents('invite.txt',$string."\r\n", FILE_APPEND);
}

}

?>

erihtoney
18.11.2009, 06:39
<?php
$str = "
<tr><td>str 1</td><td><font color=black>
<tr><td>str 2</td><td><font color=black>
<tr><td>str 3</td><td><font color=black>
<tr><td>str 4</td><td><font color=black>
<tr><td>str 5</td><td><font color=black>
";
@preg_match_all("#<tr><td>(.*)</td><td><font color=black>#isU",$str,$out) ;
$out = $out[1];
if(count($out))
{
foreach($out as $str)
{
$out_str.=$str."\r\n";
}
$file_open = @fopen("file.txt","a+") ;
@fwrite($file_open,$out_str);
}
?>
пох