ホームページ  >  記事  >  バックエンド開発  >  3_PHP チュートリアル

3_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:03834ブラウズ


{
if (is_array($value) && ! $delete)
{
foreach ($value as $suboption => $subvalue)
{
$this->{$option}["$suboption"] = $サブ値;
}
}
else
{
$this->$option = $value;
}
}
}
}

// これらはユーザー クラスでオーバーライドされることを目的とした関数です

/**
*
* @param mixed
* @return object DomNode
* @access private
    */
function insertNewResult(&$metadata)
{
if ($this->xmlroot)
return $this->xmlroot->new_child($this->tagNameResult, NULL);
else
{
$this->xmlroot = $this->xmldoc->add_root($this->tagNameResult);
//PHP 4.0.6 には $root->タグ名として名前を付けるここで確認してください...
if (!isset($this->xmlroot->{$this->tagname}))
{
$this->tagname = "name";
}
return $this->xmlroot;

}
}


/**
* 書き込む
*
* @param object DomNode $parent_row
* @param mixed $res
* @param mixed $key
* @param mixed &metadata
* @ return object DomNode
* @access private
    */
function insertNewRow($parent_row, $res, $key, &$metadata)
{
return $parent_row-& gt; new_child($this->tagNameRow, Null);
}


/**
* 今後書きます
*
* @param object DomNode $parent
* @param mixed $res
* @param mixed $key
* @param mixed &$metadata
* @para m mixed &$subrow
* @return object DomNode
* @access private
    */
function insertNewElement($parent, $res, $key, &$metadata, &$subrow)
{
return $parent->new_child($metadata[$key][ "name"], $this->xml_encode(trim$res[$key]));
}


/**
* 執筆予定
*
* @param mixed $key
* @param mixed $value
* @param mixed &$metadata
* @access private
    */
function addTableInfo($key, $value, &$metadata) {

}

// ユーザークラスでオーバーライドされることを目的とした終了関数

// ここにヘルパー関数がいくつかあります...

/**
* 入力データから utf8 を作成し、& で & をエスケープし、"< " で "< " をエスケープします
* (< の後にスペースがない場合はタグであると想定し、xml で必要とします)
*これが標準的な方法かどうかはわかりませんが、私にとってはうまくいきます。
*
* @param utfed される文字列テキスト。
* @access private
    */
function xml_encode ($text)
{
if (function_exists("iconv") && isset($this->encoding_from) && isset($this->encoding_to))
{
ini_set("track_errors",1);
$ text = iconv($this ->encoding_from,$this->encoding_to,ereg_replace("&","&",ereg_replace("< ","< ",$text)));

if (! isset($text) )
{
if (isset($php_errormsg))
{
$errormsg = "エラー: $php_errormsg";
}
else
{
$errormsg = "未定義の iconv エラー。詳細を取得するには、php.ini で track_errors をオンにしてください詳細";
}
return PEAR::raiseError($errormsg,Null,PEAR_ERROR_DIE);
}
else {
return $text;
}
}
else
{
//$text = utf8_encode(ereg_replace("&","&",ereg_replace("< ","< ",$text)));
$text =rim(ereg_replace(" & ","&",ereg_replace("< ","< ",$text)));
// echo $text;
}
return $text;
}

//kc@hireability より取得。 com http://www.php.net/manual/en/function.array-merge-recursive.php
/**
* 2 つの配列を再帰的にマージし、既存のキーと値のペアを破壊する組み込み関数はないようです
* 。 Array_Merge() は再帰的ではなく、array_merge_recursive
* 満足のいく結果が得られないようでした...重複したキー/値が追加されてしまいます。
*
* それでは、array_merge と array_merge_recursive の組み合わせです
**/
/**
*
* @param array マージされる最初の配列
* @param array マージされる 2 番目の配列
* @return array マージされた配列
* @access private
    */
function array_merge_clobber($a1, $a2)
{
if(!is_array($a1)
!is_array($a2)) return false;
$newarray = $a1;
while (list($key, $val) = each($a2))
{
if (is_array($val) && is_array($newarray[$key]))
{
$newarray[$key] = $this->array_merge_clobber($newarray [$key]、$val);
}
else
{
$newarray[$key] = $val;
}
$newarray;
}

/**
* xml 文字列を $this->xmldoc に追加します。
* 「通常の」結果セットと同じレベルに挿入されます。つまり、 の子と同じです。
* xpath 式が指定されている場合は、 xml ファイルの一部のみを選択する場合
*
* クリーンなコードは php 4.0.7 でのみ機能します
* php4.0.6 の場合:
* 以下の方法よりもクリーンな方法は見つかりませんでした。おそらく厄介です (xmlObject->string->xmlObject)
* しかし、それは機能します。 DomNode 全体を別の DomNode に追加する方法を知っている人がいたら、教えてください...
*
* @param string xml string
* @param mixed xpath xpath 式を含む文字列、または "xpath"=> を含む配列のいずれか。 xpath 式と「root」=tag/subtag/etc、結果の前に挿入されるタグです
* @access private
    */

function doXmlString2Xml ($string,$xpath = Null)
{

//最近の domxml があるかどうかを確認します。それ以外の場合は、回避策を使用してください...
$version =explode(".",phpversion());

if (! ($version[0]
if (is_array($xpath))
{
if (isset($xpath["root"]))
{
$root = $xpath["root"];
}
$xpath = $xpath["xpath"];
}

$tmpxml = xmldoc($string);
$subroot = $this->xmlroot;

if (isset($root))
{
$roots =explode("/",$root);
foreach ($roots as $rootelement)
{
if ( strlen($rootelement) > )
{
$subroot = $subroot->new_child($ルート要素,"");
}
}
}


//$this->xmlroot->addchild は、xpath からノードを追加すると奇妙な動作をします.... そのため、このコメントが役に立ちます
$newchild = $subroot->add_child($this->xmldoc ->create_comment("このコメントの目的は、sql2php.php 行「.__LINE__)」の回避策です);


// xpath が指定されていない場合は、ファイル全体を取得します
if ( (is_null($xpath) ))
{
$newchild->append_child($tmpxml->root());
}
else
{
$xctx = $tmpxml->xpath_new_context();
$xnode = xpath_eval($xctx, $xpath);
foreach ($xnode->nodeset as $node)
{
$newchild->append_child($node);
}
}

}
else {
$MainXmlString = $this-> xmldoc->dumpmem();
$string = preg_replace("//","",$string);

$MainXmlString = preg_replace("//","<".$this->xmlroot->{$this->タグ名}.">< ;/".$this->xmlroot->{$this->タグ名}.">",$MainXmlString);
$MainXmlString = preg_replace("/xmlroot ->{$this->タグ名}.">/",$string."xmlroot->{$this->タグ名}.">", $MainXmlString);

$this->xmldoc = xmldoc($MainXmlString);
$this->xmlroot = $this->xmldoc->root();

}
}

/**
* db2xml 変換のエンコーディングを設定します
* @param string $encoding_from 変換元のエンコーディング
* @param string $encoding_to 変換先のエンコーディング
* @access public
    */
function setEncoding ($encoding_from = "ISO-8859-1", $encoding_to ="UTF-8")
{
$this->encoding_from = $encoding_from;
$this->encoding_to = $encoding_to;
}
/**
* @param array $parentTables 親と子の関係
* @access public
    */

function SetParentTables($parentTables)
{
foreach ($parentTables as $table => $parent)
{
$table_info["parent_table"][$table]=$parent;
}
$this->SetOptions(array("user_tableInfo"=>$table_info));
}


/**
* xpath 式の最初に一致した内容を返します
*
* @param string $expr xpath 式
* @return 評価された xpath 式の混合コンテンツ
* @access public
    */

function getXpathValue ($expr)
{

$xpth = $this->xmldoc->xpath_new_context();
$xnode = xpath_e val($xpth,$expr );

if (isset ($xnode->nodeset[0]))
{
$firstnode = $xnode->nodeset[0];

$children = ;子供たち();
$value = $children[0]->content;
return $value;
}

else
{
return Null;
}
}

/**
* xpath 式の最初に一致した子タグから値を配列として取得します
*
* @param string xpath 式
* @return サブタグのキー->値を含む配列
* @access public
    */

function getXpathChildValues ($expr )
{
$xpth = $this->xmldoc->xpath_new_context();
$xnode = xpath_eval($xpth,$expr);

if (isset ($xnode->nodeset[0]) )
{
foreach ($xnode->nodeset[0]->children() as $child)
{
$children = $child->children();
$value[$child->{$ this->tagname}] = $children[0]->content;
}
return $value;
}
else
{
return Null;
}
}

}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314311.html技術記事 { if (is_array($value) ! $delete) { foreach ($value as $suboption = $subvalue) { $this-{$option}["$suboption"] = $subvalue; } } else { $this-$option = $value; } } } } } // これらは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。