2013-01-14 4 views
5

이것은 내가 지금까지 가지고있는 것입니다. 그러나 무엇을 시도해도 내 album-contentsubstr()으로 잘리지 않을 것입니다.preg_replace() 함수에서 substr() 함수를 사용하는 방법은 무엇입니까?

$gallery = preg_replace('/(<div class="album-content">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 

UPDATE :

내 클래스 이름이 잘못되었습니다 밝혀 내 정규식 작동하는 것처럼 보인다. 다른 str_replace()를 사용하여 출력을 이스케이프 처리해야했습니다. 수정하기 전에

$gallery = preg_replace('/(<div class="album-desc">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 
$gallery = str_replace('\"album-desc\"', '"album-desc"', $gallery); 

출력 : 모든, 어쨌든

<a href="..." class="album"> 
    <div class="album-content"><p class="album-title">Album 1</p> 
     <div class="album-desc"><p>This will be truncated by substr().</p></div> 
    </div> 
    <img src="..." /> 
</a> 

감사합니다!

+1

콘텐츠 전후에 게시물을 올리십시오. 원하시는 바에 대해 더 잘 알고 계실 것입니다. –

+2

대체 문자열의 일부로'substr()'을 사용할 수 없습니다 – Tchoupi

+0

@MathieuImbert 그것은 지금도 작동하는 것 같습니다. 내 업데이트를 참조하십시오. – fishbaitfood

답변

3

사용 preg_replace_callback()

$replace = preg_replace_callback('/(asd)f/i', function($matches) { 
    $matches[1] = substr($matches[1], 0, 2); 

    return $matches[1]; 
}, 'asdf'); 

Full documentation

+0

감사! 나는 이것을 미래에 사용할 것이라고 생각한다. – fishbaitfood

0

은 문자열의 SUBSTR "외부"와

..., "'$1'" . substr("$2", 0, 50) . "'$3'", ... 

일해야 할 것이다.

+0

내 게시물을 업데이트, 내 정규식이 작동하는 것. 어쨌든 당신의 방법을 시도했지만 작동하지 않았습니다. – fishbaitfood

관련 문제