noi/querypath-repeat

QueryPath 扩展,为重复选定的元素添加额外的方法

v1.0 2013-10-10 14:11 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:44:12 UTC


README

RepeatExtension 是一个 QueryPath 扩展,添加了以下方法

  1. repeat($counter [, $callback])
  2. repeatInner($counter [, $callback])

安装

使用 Composer,运行

$ php composer.phar require noi/querypath-repeat "*"

或者,您也可以手动编辑您的 composer.json 并添加以下内容

{
    "require": {
        "noi/querypath-repeat": "*"
    }
}

使用方法

repeat()

\QueryPath\DOMQuery repeat(int|array|\Traversable $counter [, callable $callback ])

快速示例

<?php
require_once '/path/to/vendor/autoload.php';
QueryPath::enable('Noi\QueryPath\RepeatExtension');

$qp = qp('<?xml version="1.0"?><root><item>Test</item></root>');
$qp->find('item')->repeat(5);
$qp->writeXML();

输出

<?xml version="1.0"?>
<root>
  <item>Test</item>
  <item>Test</item>
  <item>Test</item>
  <item>Test</item>
  <item>Test</item>
</root>

以下是一个使用回调函数的示例

<?php
require_once '/path/to/vendor/autoload.php';
QueryPath::enable('Noi\QueryPath\RepeatExtension');

$qp = qp('<?xml version="1.0"?><root><number>Test</number><name>Test</name></root>');

$qp->find('number')->repeat(3, function ($i, $node) {
    qp($node)->append(':' . $i);
});

$names = array('Apple', 'Orange', 'Lemon');
$qp->find('name')->repeat($names, function ($name, $node) {
    qp($node)->text(strtoupper($name));
});

$qp->writeXML();

输出

<?xml version="1.0"?>
<root>
  <number>Test:0</number>
  <number>Test:1</number>
  <number>Test:2</number>
  <name>APPLE</name>
  <name>ORANGE</name>
  <name>LEMON</name>
</root>

repeatInner()

\QueryPath\DOMQuery repeatInner(int|array|\Traversable $counter [, callable $callback ])

快速示例

<?php
require_once '/path/to/vendor/autoload.php';
QueryPath::enable('Noi\QueryPath\RepeatExtension');

$qp = qp('<?xml version="1.0"?><root><div>Test</div><div><span>Child A</span><b>Child B</b></div></root>');
$qp->find('div')->repeatInner(3);
$qp->writeXML();

输出

<?xml version="1.0"?>
<root>
  <div>TestTestTest</div>
  <div>
    <span>Child A</span>
    <b>Child B</b>
    <span>Child A</span>
    <b>Child B</b>
    <span>Child A</span>
    <b>Child B</b>
  </div>
</root>

以下是一个使用回调函数的示例

<?php
require_once '/path/to/vendor/autoload.php';
QueryPath::enable('Noi\QueryPath\RepeatExtension');

$qp = qp('<?xml version="1.0"?><root><number>Test</number><items><name/></items></root>');

$qp->find('number')->repeatInner(3, function ($i, $node) {
    qp($node)->text($i);
});

$names = array('Apple', 'Orange', 'Lemon');
$qp->find('items')->repeatInner($names, function ($name, $node) {
    qp($node)->find('name')->text(strtoupper($name));
});

$qp->writeXML();

输出

<?xml version="1.0"?>
<root>
  <number>012</number>
  <items>
    <name>APPLE</name>
    <name>ORANGE</name>
    <name>LEMON</name>
  </items>
</root>

许可

RepeatExtension 在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。