2013-03-11 3 views
0

php에서 찾은 문자열과 인접한 문자를 어떻게 찾을 수 있습니까? foreach 루프를 사용하여 $ value의 변수가있는 더 큰 텍스트 본문 안의 각 값을 찾으려고합니다. 그래서 $ value의 문자열을 둘러싸고있는 문자를 알아낼 수 있습니까? 혼란 스럽다면 죄송합니다.PHP 문자열의 인접 문자

$count = 1; 
foreach ($new_classes as $value) 
    { 
    $pageBody2 = $pageBody; 
    $pageBody = str_replace($value, '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . '</a>', $pageBody, $count); 
     if ($pageBody == $pageBody2) 
     { 
     $pageBody = str_replace(strtolower($value), '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . '</a>', $pageBody, $count); 
     } 
    } 
echo $pageBody; 

나는 그들이이있는 경우 너무 (알파벳이나 숫자 모든 문자, 마침표 또는 공백을 제외이 있는지 확인) 숫자 또는하지 있는지 확인하기 위해 문자열 $ 값 주위의 문자를 찾으려면 이

+2

예제를 제공하고 이미 시도한 코드를 표시 할 수 있습니까? – Pitchinnate

+0

텍스트 내에서 단어를 찾거나 일부 무차별 문자 집합 안의 문자를 찾고 있습니까? – RandomWhiteTrash

+0

foreach 루프 대신 preg_match()를 사용한다고 말할 수 있습니다. 몇 가지 코드를 추가하면 도움이됩니다 – aleation

답변

0

해결을 대체하지 않습니다 : 내가 무엇을 알아 냈 :

$count = 1; 
foreach ($new_classes as $value) 
{ 
    $pos = stripos($pageBody, $value); 
    $left = $pageBody[$pos - 1]; 
    $right = $pageBody[$pos + strlen($value)]; 

    if (!ctype_alpha($left) && (!ctype_alpha($right) || ($right == 's'))) 
    { 
     $pageBody2 = $pageBody; 
     if ($right == 's') 
     { 
      $pageBody = str_replace($value . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . 's' . '</a>', $pageBody, $count); 
      if ($pageBody == $pageBody2) 
      { 
       $pageBody = str_replace(strtolower($value) . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . 's' . '</a>', $pageBody, $count); 
      } 
     } 
     else 
     { 
      $pageBody = str_replace($value, '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . '</a>', $pageBody, $count); 
      if ($pageBody == $pageBody2) 
      { 
       $pageBody = str_replace(strtolower($value), '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . '</a>', $pageBody, $count); 
      } 
     } 
    } 
} 

누군가가 다른 왼쪽 $, $ 권리, 및 $ POS 변수를 정의 된 코드를 게시 (그러나 그들은 그들의 대답을 삭제 나중에 슬프게도 나는 그들의 이름을 알 수 없어 m 신용). 공백, 마침표 또는 마침표로 둘러싸인 단어에 대한 링크를 만들기 위해 if 문에 적용했습니다.

작성된 설명 : 대소 문자를 구분하지 않는 위치에 대해 stripos를 사용하여 $ pageBody에 $ value의 위치를 ​​지정했습니다 (단어의 이름과 대소 문자가 다를 수 있으므로). 그런 다음 그 위치를 사용하여 $ pageBody에서 $ value의 위치를 ​​당기고 $ 1로 이동 한 다음 $ right로 단어의 오른쪽에있는 문자를 $ left로 가져 와서 왼쪽의 문자를 $ left로 정의했습니다. 다시 position으로 이동하고 $ value의 문자 수만큼 이동하십시오. 나는 그것이 편지가 아니 었는지 확인하기 위해 $ left에 대한 유효성 확인을 실행했고, $ right가 문자 s인지 또는 문자가 아닌지 확인했습니다. 유효성 검사를 통과 한 경우 나머지 코드를 실행했습니다. 그러나 $ value의 한쪽에있는 문자가 글자 인 경우 ($ right로 s 제외) 코드를 실행하지 않습니다.