php
  • regex
  • string
  • 2012-01-05 6 views 0 likes 
    0

    나는 내가 출력에 가지고와 나 사이에 결합 된 모든 유닛이다 노력하고 무엇PHP에서 정규식을 사용하여 내 문자열을 조작하는 방법?

    $output = '"Mark Zuckerberg" OR facebook OR "A social utility connecting friends" OR profile'; 
    

    를 다음과 같이이 조작 할

    $str = '"Mark Zuckerberg" facebook "A social utility connecting friends" profile'; 
    

    다음과 같은 문자열을 가지고있다. 여기서 한 단위는 큰 따옴표가 아닌 단일 단어 또는 작은 따옴표 안에있는 완전한 문자열입니다.

    나는 preg_replace로 시도하고 싶었습니다. 하지만 일치하는 올바른 정규 표현식을 얻을 수 없습니다. 친절하게 도와주세요!

    답변

    3
    $result = preg_replace('/ (?=(?:[^"]*"[^"]*")*[^"]*$)/', ' OR ', $subject); 
    

    문자열에 이스케이프 된 따옴표가없는 경우 작동합니다. 그 다음에 짝수 개의 큰 따옴표가 오는 경우에만 공백을 대체합니다.

    +0

    감사합니다 팀! 그건 잘된거야. – Goje87

    0

    어떤 이유 preg_replace이다보다는 간단한

    $output = '"'.implode('" OR "',str_getcsv($str,' ')).'"'; 
    
    관련 문제