|
|
|
| есть функция которая обрабатывает регулярным выражением тест и запускает функцию вывода.
function repl($txt)
{
if($txt){
$txt = preg_replace("/\[file=([0-9]*)\]/i", Output_file('\\1'), $txt);
return $txt;
}
}
|
вот сама функция:
function Output_file($str){
$select_file = "SELECT * FROM `files` WHERE id='$str'";
$results = mysql_query($select_file);
$row= mysql_fetch_array($results);
$link = "../".$row['url'].$row['name'];
$f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$row['size']."<br>";
return $f;
}
|
Если я указываю в текте два файла к примеру [file=1] [file=2] одновременно то выводт 2 раза инфу по одному файлу по id=2 хотя если я в $f вставлю $str под каждым выводом будет его id тоесть разные .. подскажите в чем ошибка? | |
|
|
|
|
|
|
|
для: sidPR
(22.01.2007 в 01:16)
| | Также непонятно если возвращяю вместо $f - $select_file Выводит следующие
SELECT * FROM `files` WHERE id='2'
SELECT * FROM `files` WHERE id='1'
|
поидеи должно работать , но нет :( | |
|
|
|
|
|
|
|
для: sidPR
(22.01.2007 в 01:16)
| | Здесь разумнее вместо функции preg_replace() испльзовать функцию preg_replace_callback() - она как раз позволяет задать в качестве замены пользовательскую функцию. | |
|
|
|
|
|
|
|
для: sidPR
(22.01.2007 в 01:16)
| | Попробуй так.
<?
function repl($txt) {
if($txt)
{
$txt = preg_replace("/\[file=([0-9]*)\]/i",'\\1', $txt);
Output_file($txt);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Leviafan
(22.01.2007 в 01:30)
| |
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\!Server\www\waldes\func.php on line 62
|
| |
|
|
|
|
|
|
|
для: sidPR
(22.01.2007 в 01:38)
| |
$txt= preg_replace_callback('/\[file=([0-9]*)\]/i',
create_function(
'$select_file = "SELECT * FROM `files` WHERE id=$str";
$results = mysql_query($select_file);
$row = mysql_fetch_array($results)
$link = "../".$row[url].$row[name];
$f = "Имя файла:<a target=_blank href=$link>Скачать</a><br>Размер".$row[size]."<br>$str";
return $row[size];'
),$txt);
|
выдает :
Warning: Wrong parameter count for
create_function() in C:\!
Server\www\waldes\func.php on line 50
Warning: preg_replace_callback() requires
argument 2, '', to be a valid callback in
C:\!Server\www\waldes\func.php on line 50
|
может я не совсем вкурил конструкцию preg_replace_callback() | |
|
|
|
|
|
|
|
для: sidPR
(22.01.2007 в 01:48)
| | Сделал так
$txt = preg_replace_callback("/\[file=([0-9]*)\]/i", "Output_file", $txt);
|
function Output_file($matches){
$select_file = "SELECT * FROM `files` WHERE id='$matches[1]'";
$results = mysql_query($select_file);
while($row = mysql_fetch_array($results)){
$link = "../".$row['url'].$row['name'];
$f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$row['size']."<br>";
return $row['size'];
}
}
|
Все запахало в такой связке :) спасибо всем! | |
|
|
|