2015-02-13 4 views
-1

Я использую следующий запрос XPath:

$var = ''; 
 

 
$search = $selector->query('//td[text() = "text"]/following-sibling::td')->item(0);

Как использовать $ вар вместо "текст"?

запроса ('// тд [текст() = $ вар]

+0

Я нахожу работу с XPath намного проще в JavaScript. Может не соответствовать тому, что вам нужно сегодня, но хорошо знать в будущем. https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript – getglad

+0

Какой язык программирования и конкретная библиотека XPath вы используете? Лучшее решение может быть доступно, если предоставить данные; существующий не будет работать, если, например, заменяемый текст включает буквенные двойные кавычки. –

ответ

0

Не знаю, какой язык, который, при условии . как оператор инфикс Concat:

$search = $selector->query('//td[text() = "'.$var.'"]/following-sibling::td'); 

Update:

Как указал Чарльз Даффи, данное решение имеет недостатки. Предостережение: этот раздел является непроверенным кодом, разработанным исключительно в соответствии с документами php (а именно this one). Не стесняйтесь улучшать/удалять.

$var = ''; 

function get_var() { 
    // Return variable $var 
    return $var; 
} 
$selector->registerPHPFunctions("get_var"); 
$search = $selector->query('//td[text() = php:function("get_var")]/following-sibling::td'); 
+0

это сработало, THX !! – ronx

+0

Большинство двигателей XPath имеют надлежащую поддержку внеполосных переменных, которые не подвержены риску запроса (например, этот ответ). Таким образом, это субоптимально, как правильность, так и безопасность - это эквивалент XPath таблиц Bobby (предоставлено, в XPath нет операции DROP TABLE, но все еще можно ввести код, который изменяет запрос, чтобы выбрать информацию, которую пользователь не должен видеть). –

Смежные вопросы