여러 항목의 php preg_replace ()
-
12-09-2019 - |
문제
이것이 내가 지금까지 가지고있는 것입니다.
<?php
$text = preg_replace('/((\*) (.*?)\n)+/', 'awesome_code_goes_here', $text);
?>
나는 일반 텍스트 목록을 다음의 형식으로 성공적으로 일치시킵니다.
* list item 1
* list item 2
나는 그것을 대체하고 싶다 :
<ul>
<li>list item 1</li>
<li>list item 2</li>
</ul>
나는 머리를 감싸는 주위에 머리를 잡을 수 없다 <ul>
그리고 반복 <li>
에스! 누구든지 도와 줄 수 있습니까?
편집 : 아래 답변대로 솔루션 ...
내 코드는 이제 읽습니다.
$text = preg_replace('/\* (.*?)\n/', '<ul><li>$1</li></ul>', $text);
$text = preg_replace('/<\/ul><ul>/', '', $text);
그게 해냈어!
해결책
한 가지 옵션은 각 목록 항목을 간단히 바꾸는 것입니다. <ul><li>list item X</li></ul>
그런 다음 두 번째 교체를 실행하여 대체 할 수 있습니다. </ul><ul>
아무것도없이.
다른 팁
나는 이것이 오래된 게시물이라는 것을 알고 있지만 해결책이 필요합니다. 이 시도! :)
$text = preg_replace("/\[ul\](.*)\[\/ul\]/Usi", "<ul>\\1</ul>", $text);
$text = preg_replace("/\[li\](.*)\[\/li\]/Usi", "<li>\\1</li>", $text);
나는 Regex의 전문가가 아니지만 원하는 패턴을 일치시키고 원하는 패턴을 ()의 ()를 둘러싸고 ()의 패턴으로 캡처하는 것입니다. 그런 다음 "멋진 코드 섹션"에 $ 1 (첫 번째 백색 참조 등)을 배치 할 수 있습니다.
Regex Buddy 더 필요한 경우 정규 표현에 대한 정말 멋진 튜토리얼이 있습니다.
당신은 사용할 수 있습니다 preg_match_all 모든 항목을 일치시킨 다음 UL 및 LI 태그 내에서 다시 작성합니다.
나는 이것이 당신이 원하는 것이라고 생각합니다
<?php
$text = <<<TEXT
* item
* item
TEXT;
$html = preg_replace( "/^\\* (.*)$/m", "<li>\\1</li>", $text );
echo '<ul>', $html, '</ul>';
제휴하지 않습니다 StackOverflow