2016-07-04 3 views
1

으로 바꾸십시오. 이상한 것에서 일하는 것 - 클라이언트는 많은 비연의 공백을 추가하는 HTML 편집기에 텍스트로드를 붙여 넣습니다. 브라우저에 출력 할 때 스타일을 지정해야합니다.여러 개의 '     '을 HTML 태그

<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg<span class="right">50.4 mpg</span></li> 
    <li>Extra Urban mpg<span class="right">72.4 mpg</span></li> 
</ul> 

사용 레그로 교체 또는 HTML 파서 :

나는 다음과 같은 문자열을

<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
    <li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul> 

이로 변경을 만들려고 노력하고 있습니다. 나는 둘 다 시도했다. 모든 &nspb; 년대를 대체

preg_replace("/(&nbsp;)/", "<span>", $input_lines); 

: 내 PHP의 preg_replace이다이있다. 나는 하나의 스팬을 추가하기를 원하며, 끝까지 닫아야한다. 나는 단순 HTML 돔으로 experminting하고 있지만 이것을 달성하기 위해 어떤 기능을 사용해야하는지 잘 모르고있다.

감사

+1

에코 preg_replace이다 ('/ ( ) + ([^ <] +) \ 2 ', $ input_lines); – splash58

답변

3

당신은

(?:&nbsp;)+([^<]*) 

<span class="right">\1</span> 

그것은 모든 반복 &nbsp; 일치하고 종료 태그의 <까지 모든 것을 움켜 교체 시도 할 수 있습니다. 위의 문자열로 바꾸면 캡쳐가 주변에 span으로 삽입됩니다.

See it here at regex101.

0

당신은 CSS 선택기를 사용할 수 있습니다, 당신은 탈출 유니 코드 값을해야 할 것입니다.

span.right::before { 
    content: "\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0"; 
} 
+0

공백을 출력하려고하지 않습니다. PHP를 사용하여 스팬으로 대체하려고합니다. –

+0

제 사과, 질문을 잘못 읽었습니다. @ClasG에서 제공하는 답변을 권하고 싶습니다. –

0

이렇게하면됩니다.

<?php 
$text = '<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
    <li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul>'; 

$new_text = preg_replace("/(?:&nbsp;)+([^<]*)/", " <span class=\"right\">\${1}</span>", $text); 
echo $new_text; 

결과 : https://eval.in/600085

0

이 시도이

<?php 
$text = "<ul class='columns'> 
<li><u>Running costs</u></li> 
<li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
<li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul>";  
echo $text; 
$pattern = '/(&nbsp;)+([\w\.\s]+)(<\/li>)/'; 
$text = preg_replace($pattern,'<span class="name">$2</span>', $text); 

echo htmlspecialchars($text); 
?>