내가 PHP의 preg-match-all
기능을 사용하여 일부 HTML 콘텐츠를 분할하기 위해 노력하고있어 나열 내가 예를 들어, 링크 설명을 변경할 수 있도록하려면PHP : 분할 목록 항목 및 아이
<li class="cat-item"><a title="blabla" href="#">parent 1</a>
<ul class="children">
<li class="cat-item"><a title="" href="#">child 1</a></li>
</ul>
</li>
<li class="cat-item cat-item-4"><a title="blabla" href="#">father 2</a>
<ul class="children">
<li class="cat-item"><a title="" href="#">child 1</a></li>
<li class="cat-item"><a title="bla" href="#">child 2</a></li>
</ul>
</li>
을;
<a title="" href="#">child 1</a>
HTML 원래의 구조를 유지하면서
<a title="" href="#">I changed that</a>
한다. 지금까지, 내가 사용 링크를 분할 성공 :
$results = preg_match_all('/<a\s[^>]*href\s*=\s*(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU', $html, $tokens);
foreach ($tokens[0] as $category)
{
echo $category.'<br>';
}
이의 단점은 그것이 자식 목록을 삭제하고, 같은 수준에있는 모든 목록 항목을 출력하는 것입니다; 부모와 아이 사이의 구별 없음.
원래의 계층 구조를 유지하기위한 아이디어가 있습니까?
고맙습니다 :)
정규 표현식에 대해 매우 어려운 작업인데,이 경우 HTML 구문 분석기를 사용하는 것이 더 좋을 것입니다. (저는 매우 pro-regexp이고 일반적으로 구석에 맞서 싸우지 만 이런 종류의 둥지 짓기의 힘든 투쟁이다). 앵커에게 정확히 무엇을 넣으시겠습니까? – Orbling
thanx Orbling, 나는 regexp가 html을 파싱 할 때 올바른 방법이 아니라는 것에 동의한다. domDocument를 가지고 놀기 시작했지만 지금까지는 내 포인트에 도달하지 못했다. 내가 원하는 것은 wordpress의 wp_list_categories() 함수와 관련이있다. ; 에코 결과를 번역해야합니다. 이 함수는 배열이나 객체의 반환 값을 가지고 있지 않지만 오직 echo :(그래서 나는 그것에 대한 dummyy 픽스를 만들려고 노력한다. :) – numediaweb