2014-03-05 6 views
0

PHP에서는 문자열에서 특정 문자 a를 찾을 수 있지만 aa 나 ab는 어떻게 찾을 수 있습니까? 는이 코드PHP에서 특정 문자 찾기

$c=strpos($a, 'a') === 0); 
$cr=strpos($a, 'ar') === 0); 
if ($c == true) {echo "This is c";} 
else if ($cr == true) {echo "This is cr";} 

하지만이

$cr=strpos($a, 'ar') === 0); 
$c=strpos($a, 'a') === 0); 
if ($cr == true) {echo "This is cr"; } 
else if ($c == true) {echo "This is c"; } 

를 사용하려면이 또한 원하는

$ C 형 =의 strpos대로 작동하지 않는 ($ A, 'A'); $ cr = strpos ($ a, 'ar');

if (substr ($ a, $ c + 1, 1)! = 'a') {echo "found a!"; } echo a else if (substr ($ a, $ c + 1, 1)! = 'ar') {echo "found ar!"; 이 1을 반환하는 경우} 이것은 또한

+2

내가 말하기는 싫지만 정규 표현식 (preg)이 가장 좋은 방법 일 것입니다. – Powerlord

+1

정규식을 사용하여 작업하기 – vogomatix

+0

'$ c = strpos ($ a, 'a'); if (substr ($ a, $ c + 1, 1)! = 'a') {그것을 찾았습니다! } ' –

답변

2

preg_match("/(?<!a)a(?![ab])/",$a,$match,PREG_OFFSET_CAPTURE)

사용을 고려 아칸소하지 않는 에코, 다음 필요 aa 또는 ab합니다 (lookbehind에 유의하지 않은 a 있었다 aa에, 그렇지 않으면 두 번째 a 때문에 것 시합).

또한 $match[0][1]을 사용하여 일치하는 문자열의 위치를 ​​확인할 수 있습니다.

+0

'\ ba \ b'와 같은 간단한 단어 경계에서도 작동하지 않습니까? – sofl

+0

@sofl 아니에요. 'ac'와 일치 시키려면 어떻게해야할까요? –

+0

+1 RegEx를 사용하는 효율적인 방법입니다. –