Hai phương pháp bên dưới mỗi mục đích sử dụng cùng một mục đích: quét nội dung của bài đăng và xác định xem có ít nhất một thẻ img có thuộc tính alt chứa "từ khóa" đang được thử nghiệm không.Sử dụng xPath hoặc Regex?
Tôi mới đến xPath và muốn sử dụng nó tùy thuộc vào cách tiếp cận tốn kém mà được so sánh với phiên bản regex ...
Phương pháp # 1 sử dụng preg_match
function image_alt_text_has_keyword($post)
{
$theKeyword = trim(wpe_getKeyword($post));
$theContent = $post->post_content;
$myArrayVar = array();
preg_match_all('/<img\s[^>]*alt=\"([^\"]*)\"[^>]*>/siU',$theContent,$myArrayVar);
foreach ($myArrayVar[1] as $theValue)
{
if (keyword_in_content($theKeyword,$theValue)) return true;
}
return false;
}
function keyword_in_content($theKeyword, $theContent)
{
return preg_match('/\b' . $theKeyword . '\b/i', $theContent);
}
Phương pháp # 2 sử dụng xPath
function keyword_in_img_alt()
{
global $post;
$keyword = trim(strtolower(wpe_getKeyword($post)));
$dom = new DOMDocument;
$dom->loadHTML(strtolower($post->post_content));
$xPath = new DOMXPath($dom);
return $xPath->evaluate('count(//a[.//img[contains(@alt, "'.$keyword.'")]])');
}
"constains"? Tôi nghĩ bạn có lỗi đánh máy. –
Cảm ơn, sửa lỗi đánh máy và chỉnh sửa XPath xPath –