2012-07-15 2 views
-4

큰 문자열과 링크로 묶는 것과 같이 몇 가지 변경해야하는 단어 배열이 있습니다. 첫 번째 문제는 전체 단어 또는 조합 단어를 감싸는 것입니다. 두 번째 문제는 이전 단계의 최소 1000 자마다 수행하는 것입니다.PHP에서 1000 자의 문자열을 모두 줄 바꿈하는 방법

$string="lalala word lalala blah, blah lalala combination of words lalala lalala..."; 
$patterns=array('word','combination of words'); 
$replacements=array('<a href="#">word</a>','<a href="#">combination of words</a>'); 

예를 들어, 내가 전에 스 니펫과해야 할 일은 무엇입니까?

+1

얘들 아, 당신은 또한 이유에 대해 언급하지 않는 한하지 아래로 투표를 할. @arsey, PHP 프로그래밍 기술이 있습니까? 어떤 코드를 시도 했습니까? – Steven

+0

네, 몇 가지 기술이 있어요. 나는 이것을 시도한다 : preg_replace ($ patterns, $ replacemants, $ string); – Arsey

+1

@Steven : 아래쪽 화살표 설명에 왜 downvotes 캐스팅 설명합니다 : "이 질문은 연구 노력을 보여줍니다, 그것은 불분명하거나 유용하지 않습니다." –

답변

0

해결책 :

<?php 
     function set_keys_by_words($content, $key, $words,$before,$after) { 
     $positions = array(); 
     $string = ''; 
     for ($i = 0; $i < count($words); $i++) { 

      $string = preg_replace('/\b' . $words[$i] . '\b/ui', $key . $words[$i], $content); 
      $position = mb_strpos($string, $key); 

      if ($position != '') { 
       $positions[(int) $position] = $words[$i]; 
      } 
     } 
     ksort($positions); 
     $word = ''; 
     $number = ''; 
     $i = 0; 
     foreach ($positions as $k => $v) { 
      $i++; 
      if ($i == 1) { 
       $number = $k; 
       $word = $v; 
      } 
     } 
     if ((int) $number) { 
      $word_len = strlen($word); 
      $part_after = preg_replace('/\b' . $word . '\b/ui', $before . $word . $after, mb_substr($content, 0, $number + $word_len)); 
      echo $part_after . mb_substr($content, $number + $word_len, 1000); 
      $content = mb_substr($content, $number + $word_len + 1000); 
      if ($content != '') { 
       set_keys_by_words($content, $key, $words); 
      } 
     } else if ($number == '' && $content != '') { 
      echo $content; 
     } 
    } 
    ?> 
0

wordwrap()을 찾고있는 것처럼 들리 네요. 그런 다음 대체 당신의 검색 패턴에 적용 할 preg_replace_callback()를 사용할 수 있습니다

foreach ($patterns as $pattern) { 
    $regex = '/' . preg_quote($pattern, '/') . '/'; 
    $string = preg_replace_callback($regex, function($match) { 
     return '<a href="#">' 
      . wordwrap(htmlspecialchars($match), 1000, '<br />') 
      . '</a>'; 
    }, $string); 
} 
관련 문제