массив array записать в MySQL

Статус
В этой теме нельзя размещать новые ответы.
PHP:
function totranslit($var, $lower = true, $punkt = true) {
	$NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
	$NpjLettersTo = "abvgdeziklmnoprstufcyi";
	$NpjBiLetters = array ("й" => "j", "ё" => "yo", "ж" => "zh", "х" => "x", "ч" => "ch", "ш" => "sh", "щ" => "shh", "э" => "ye", "ю" => "yu", "я" => "ya", "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye" );

	$NpjCaps = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
	$NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";

	$var = str_replace( ".php", "", $var );
	$var = trim( strip_tags( $var ) );
	$var = preg_replace( "/\s+/ms", "-", $var );
	$var = strtr( $var, $NpjCaps, $NpjSmall );
	$var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
	$var = strtr( $var, $NpjBiLetters );

	if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
	else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );

	$var = preg_replace( '#[\-]+#i', '-', $var );

	if ( $lower ) $var = strtolower( $var );

	if( strlen( $var ) > 50 ) {

		$var = substr( $var, 0, 50 );

		if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );

	}

	return $var;
}



$pattern="#(.+?): rate=([\.0-9]+), reserve=([\.0-9]+)#" ;
preg_match_all($pattern, $content, $cur_arr);
//print_r($cur_arr);
$replace_arr=array("=>","->");//заменяем все "=>" или " -> " мб еще что нито буит ждя преобразования к виду wmz_wmz
for($i=0;$i<count($cur_arr[0]);$i++)
{$wm=str_replace($replace_arr,"_",$cur_arr[1][$i]);
$wm=str_replace(array(" ",".","-"),"",$wm);//здесь удаляем лищние знаки
$wm=totranslit($wm);//переводим в транслит, так как незя руские имена
$exchange[$wm]['rate']=$cur_arr[2][$i];
$exchange[$wm]['reserve']=$cur_arr[3][$i];
}


Только придеться подправлять функцию db_array_to_mysql
так как не работает она с двумерными массивами
 
ну а полный код выглядит примерно вот так (мб где ошибся)
PHP:
function db_connect($server = DB_SERVER, $username = DB_USER, $password = DB_PASS, $database = DB_NAME, $link = 'db_link') { 
  global $$link; 
  if (USE_PCONNECT == 'true') { 
    $$link = mysql_pconnect($server, $username, $password); 
  } else { 
    $$link = mysql_connect($server, $username, $password); 
  } 
  if ($$link) mysql_select_db($database); 
  return $$link; 
} 

function db_array_to_mysql($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') { 
  global $$link; 
  reset($data); 
  if ($action == 'insert') { 
    $query = 'insert into ' . $table . ' ('; 
    while (list($columns, ) = each($data)) { 
      $query .= $columns . ', '; 
    } 
    $query = substr($query, 0, -2) . ') values ('; 
    reset($data); 
    while (list(, $value) = each($data)) { 
      switch ((string)$value) { 
        case 'now()': 
          $query .= 'now(), '; 
          break; 
        case 'null': 
          $query .= 'null, '; 
          break; 
        default: 
          $query .= '\'' . addslashes($value) . '\', '; 
          break; 
      } 
    } 
    $query = substr($query, 0, -2) . ')'; 
  } elseif ($action == 'update') { 
    $query = 'update ' . $table . ' set '; 
    while (list($columns, $value) = each($data)) { 
      switch ((string)$value) { 
        case 'now()': 
          $query .= $columns . ' = now(), '; 
          break; 
        case 'null': 
          $query .= $columns .= ' = null, '; 
          break; 
        default: 
          $query .= $columns . ' = \'' . addslashes($value) . '\', '; 
          break; 
      } 
    } 
    $query = substr($query, 0, -2) . ' where ' . $parameters; 
  } 
  return mysql_query($query, $$link); 
} 


/////////http://www.savechange.ru/index.php///////// 

$_url = 'http://www.savechange.ru/savechange_c.php'; 

   $ch = curl_init(); 

   curl_setopt($ch, CURLOPT_POST,1); 
   curl_setopt($ch, CURLOPT_URL,$_url); 
   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
   $content = curl_exec ($ch); 

   curl_close ($ch);    
     
///// 
unset ($cur_arr); 
unset ($curs_arr); 
//// 
$pattern="#(WM[A-Z] -> WM[A-Z]): rate=([\.0-9]*)#" ;
preg_match_all($pattern, $content, $cur_arr);

for($i=0;$i<count($cur_arr[0]);$i++)
{$wm=str_replace(" -> ","_",$cur_arr[1][$i]);
$sql_data_array[$wm]=$cur_arr[2][$i];
}

db_connect();

//добавляем данные
$sql_data_array['exchanger'] = 'savechange';
db_array_to_mysql('exchange', $sql_data_array); 

//изменяем данные
db_array_to_mysql('exchange', $sql_data_array, 'update', "exchanger = 'savechange'");

Кто бы помог подправить код под мою функцию, был бы безмерно благодарен. :thenks:
Функция:
PHP:
function html_to_array( $url, $element = null )
{
    if( !( $data = file_get_contents( $url ) ) )
        return false;
    
    preg_match_all( '~<img.*?>(</img>)?~si', $data, $page['img'] );
    preg_match_all( '~<p.*?>.*?[^<]</p>~', $data, $page['p'] );
    preg_match_all( '~<a.*?[^>].*[^<]</a>~', $data, $page['Link'] );
    return !is_null( $element ) ? $page[ $element ] : $page ;
}
коротко: нужно вытягивать html-теги и заносить их в mysql.
 
Кто бы помог подправить код под мою функцию, был бы безмерно благодарен. :thenks:
Функция:
PHP:
function html_to_array( $url, $element = null )
{
    if( !( $data = file_get_contents( $url ) ) )
        return false;
    
    preg_match_all( '~<img.*?>(</img>)?~si', $data, $page['img'] );
    preg_match_all( '~<p.*?>.*?[^<]</p>~', $data, $page['p'] );
    preg_match_all( '~<a.*?[^>].*[^<]</a>~', $data, $page['Link'] );
    return !is_null( $element ) ? $page[ $element ] : $page ;
}
коротко: нужно вытягивать html-теги и заносить их в mysql.

А подробнее? Какие тэги вытягивать? Какие части этих тегов? Структура таблицы mysql какова?
 
теги <img>,<a>,<p>. Все, что между <TAG>*</TAG>. Так, напр., <а>*</а> не должен парситься вместе с <р> (если он между <р>*</р>).
По-идее, для каждого семейства тегов будет своя таблица (все <р> - в одной, <а> - в другой и тд.). Если кто предложит вариант получше, возражать не буду.
 
теги <img>,<a>,<p>. Все, что между <TAG>*</TAG>. Так, напр., <а>*</а> не должен парситься вместе с <р> (если он между <р>*</р>).
По-идее, для каждого семейства тегов будет своя таблица (все <р> - в одной, <а> - в другой и тд.). Если кто предложит вариант получше, возражать не буду.

мне кажется, обсуждение лучше перенести в тему Для просмотра ссылки Войди или Зарегистрируйся
 
Всем спасибо тему можно закрыть

:tcl:
 
я всегда пользуюсь serialize если именно код надо положить в базу
 
serialize() / unserialize() ?!

Добавлено через 21 секунду
ах да, уже было
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху