Является ли это правильным оператором запроса xpath для захвата единственной ссылки MP3 в этой строке HTML? - PullRequest
1 голос
/ 21 ноября 2011

У меня возникли проблемы с запросом xpath, который я использую в своем коде, и подумал, что я добавлю его туда и спросу у сообщества, правильно ли этот запрос сформулирован по назначению. Как показано в приведенном ниже коде, я собираюсь взять единственный URL-адрес MP3 в атрибуте href тега. Весь этот бит HTML подается в xpath в виде строки.

запрос xpath:

$hrefs = $xpath->query("//a[contains(@href,'mp3')]/@href");

HTML-код, введенный в запрос:

<img class="myclass" title="mytitle" src="http://www.mydomain.com/myfolder/mypic.jpg" alt="myalt" width="552" height="414" />

[be-linked-title-info]

<a title="mytitle" href="https://s3.amazonaws.com/myfolder/published/RJD2+-+SEVEN+LIGHT+YEARS+(INSTRUMENTAL).mp3">Song Name and Artist</a>

The written plain text post entry describing this music track goes here and says blah blah blah

1 Ответ

3 голосов
/ 21 ноября 2011

Это может быть хорошо для вашего ввода, но оно будет соответствовать mp3 в любом месте атрибута href, что, вероятно, не то, что вы хотите. Более строгий подход будет соответствовать только строкам, оканчивающимся на .mp3. Как это:

//a['.mp3' = substring(@href, string-length(@href) - 
                              string-length('.mp3') + 1)]/@href
...