2012-05-23 2 views
1

가능한 중복을 앞에 :
Add a prefix to each item of a PHP arrayPHP, 여러 단어를 폭발과 문자로

내가 부울 모드 전체 텍스트 검색을 사용하려고합니다.

사용자가 두 단어 이상을 입력하는 경우, 다음과 같이 가정합니다.

Search Keyword : Apple Macbook Air 

Result : +Apple +Macbook +Air 

그래서 이렇게하기 위해 PHP 명령을 만들었지 만 작동하지 않았습니다.

$ArrayKeywords = explode(" ", $b_keyword); 
for($i = 0; $i < sizeof($ArrayKeywords); $i++) 
$array_keyword = '+"$ArrayKeywords[$i]" '; 

이 문제를 어떻게 해결할 수 있습니까?

$keyword = '+' . trim(str_replace(' ',' +',$b_keyword)); 
+0

$ Array_keyword = "+"와 같아서는 안됩니다. $ ArrayKeywords [$ i];' – skos

+0

@Sachyn 코드가 작동하지 않습니다 : ( – james

+0

편집했는지 확인하십시오. 작동하지 않습니다. – skos

답변

4

도 할 수있다 (demo)

내가 볼
echo preg_replace('(\w+)', '+$0', 'Apple Macbook Air'); 
+0

'preg_replace ('(\ b \ w) ','+ $ 0 ','Apple Macbook Air ');가 더 효율적입니다 –

2

정말 그냥이 작업을 수행 할 이유가 for 루프

// trims off consecutive spaces in the search term 
$b_keyword = preg_replace('/\s+/', ' ', $b_keyword); 
$ArrayKeywords = explode(" ", $b_keyword); 
echo '+' . implode(' +', $ArrayKeywords); 
+0

굉장한이 작품! – james

+0

james : 여러 공백을 지원하고 정규 표현식을 사용해야합니다. – flowfree

+0

@bsdnoobz ok 편집 됨, 감사합니다 –

3

할 필요가 없습니다 문자열 내부의 변수가 어떻게 작동하는지 오해 한 것.

당신은 작은 따옴표 안에 무엇이며, 큰 따옴표 안에 변수 '내용과 같이, 인쇄로 해석됩니다 배운 수

: 당신은 두 가지 방법을 결합 할 수 없습니다,

$foo = 'bar'; 

echo 'foo: $foo'; // result: foo: $foo 
echo "foo: $foo"; // result: foo: bar 

을하지만, 작은 따옴표를 붙이면 작은 따옴표 안에은 변수의 내용을 인쇄하지 않습니다. 큰 따옴표는 전체 문자열이 이들로 구분되는 경우에만 작동합니다. 사건이 확대

echo 'foo: "$foo"'; // result: foo: "$foo" 

, 당신은 단지 큰 따옴표와 작은 따옴표를 대체 할 수 있고, 내부 따옴표를 삭제 : 따라서 다음이 작동하지 않습니다.

$array_keyword .= "+$ArrayKeywords[$i] "; 

또한, 그렇지 않으면 변수가 각 루프에 덮어 쓰기, 당신은 변수 (.=)에 새로운 단어를 연결할 필요가 있습니다.

사이드 참고 :이 배열을 통해 반복 할 때 for 루프보다 foreach 루프를 사용하는 것이 훨씬 더 쉽다 :

$ArrayKeywords = explode(" ", $b_keyword); 
$array_keyword = ''; 
foreach($ArrayKeywords as $keyword) { 
    $array_keyword .= '+$keyword "; 
} 
2

가있다 :

+0

왜 내 코드를 볼 수 있습니까? 지금은 작동하지 않습니다 .. 감사합니다! – james

2

당신은 탭, 줄 바꿈, 공백이 그것을 원하는 경우 등

echo preg_replace('(\s+)', '$0+', ' Apple Macbook Air'); 
//output: +Apple +Macbook +Air 
관련 문제