2013-05-02 3 views
0

뒤에 바꿉니다. 공백을 제거해야하는 공백이있는 Wordpress의 데이터베이스 덤프가 있습니다. 나는이 일이 훨씬 더 간단하다고 생각했다. 이 일치하도록 표현 나쁜 HREF의URL의 공백을 #

(href\="http\:\/\/wfsu.org/blog-coastal-health\/\?page_id\=\d+\/\#)((\w+)\s(\w+))+\" 

문제는 대시와 공백을 대체하기 위해 노력하고있다 ..

나는이 개 단어가 아니라 3 아무것도에 잘 작동 $1$3-$4"으로 대체하고있어 + 단어. 누구나 해결책이 있습니까?

+0

2 단어로 작동하지만 3 단어 이상으로 작동하지 않는 현재 방법은 무엇입니까? – Arman

+0

왜 공백을 대체하지 않습니까? - – Matheus

+0

을 모두 바꾸십시오. Trokka : sublime 편집이라고하는 texteditor를 사용합니다.하지만 sed를 사용하고 있습니다. Matheus : 많은 공간을 바꿀 경우이 파일은 6k 행 sql 파일입니다. p –

답변

0

preg_replace_callback()을 사용하는 것이 좋습니다. 이렇게하면 정규식을 사용하여 관심있는 URL 문자열을 가져온 다음 문자열 조작을 사용하여 쉽게 대시로 바꿀 수있는 콜백 함수에 전달할 수 있습니다.

코드를 다음과 같이 보일 수 있습니다

$original_string; // your original string holding your text content 
$pattern = '~href="http://wfsu.org/blog-coastal-health/.*"~i'; 
$cleaned_string = preg_replace_callback(
    $pattern, 
    function ($matches) { 
     return str_replace(' ', '-', $matches[0]); 
    }, 
    $original_string 
); 

이 당신이 정규식 자체 내에서 교체 할 필요가 얼마나 많은 패턴 조각을 결정하기 위해 시도 할 필요가 없습니다. 대신 전체 href 속성 값을 캡처하고 간단한 str_replace()을 입력하면됩니다.