3

このようなdivからプレーンテキストを取得するxPathクエリがあります

xpath->query("//div[@id='main']//span[@class='meta']/text()")

このクエリはThe text that I want,

クエリ内でそのコンマを削除できる方法はありますか?

ありがとう

編集:

以下の Mad のコードを使用すると、クエリは次のようになります (,例の を単語helloに置き換えて、混乱を少し減らしました)。

$search_term = $xpath->query("translate('//div[@id='main']//span[@class='meta']/text()', 'hello', '')");

そして、次のようにクエリ結果をエコーし​​ようとしています:

foreach ($search_term as $st) { 
echo $st->nodeValue; }

私が受け取っているエラーは

Invalid argument supplied for foreach() in ... on line 50
4

2 に答える 2

3

文字を空の文字列translate()に置き換えるために使用できます。,

xpath->query("translate(//div[@id='main']//span[@class='meta']/text(), ',', '')")

ただし、ノード内でコンマの前後にスペースがある場合、末尾にスペースが生じる可能性がありtext()ます。

normalize-space()次に、先頭/末尾の空白を削除するために使用できます。

xpath->query("normalize-space(translate(//div[@id='main']//span[@class='meta']/text(), ',', ''))")

ただし、テキストの途中にある一連の空白も単一のスペースに正規化します。

substring-before()を使用して、前のテキストを選択することもでき,ます。

xpath->query("substring-before(//div[@id='main']//span[@class='meta']/text(), ' ,')")

ただし、文字列に含まれていない場合は、,substring-before()も返されません。

于 2012-04-15T23:41:43.113 に答える
2

rtrim末尾のコンマを削除したい場合は、より良い選択のようです。これに XPath を含めることが望ましい理由はわかりませんが、fn:replace関数 (XPath 2.0) を使用することもできます。

于 2012-04-15T20:41:45.290 に答える