5月 20, 2013

PHPのxpathでends-withを使う

注釈:この記事はQiitaにわたしが投稿していた記事を、自分のブログへ移動させたものです。
PHPのDOMXPathでends-withを使い、属性の末尾が指定の文字列で終わるオブジェクトを取得しようとしたら、エラーになった。どうやら対応していないらしい。
しかし、DOMXPathには、自前の関数を定義できるという素敵機能というか、気持ち悪い機能というか。

DOMXPath( )でxpathオブジェクトを作った後、

function ends_with($node, $value){
    return substr($node[0]->nodeValue,-strlen($value))==$value;
}
$xpath->registerNamespace("php", "http://php.net/xpath");
$xpath->registerPHPFunctions("ends_with");

$nodes = $xpath->evaluate( "//li/a[php:function('ends_with',@href,'/')]" );

こんな感じで登録して、使用できます。
いやー、便利。
しかしstarts-withに対応してるんだから、ends-withも対応しておいてよ。

0 件のコメント:

コメントを投稿