2017-02-07 2 views
0

최근에 웹 사이트를 Drupal로 마이그레이션했습니다. 이전 페이지 제목 중 일부는 what's과 같은 단어로 곱슬 어포스트로피를 포함합니다.URL을 하이픈 넣고 중선 아포스트로피를 무시하는 PHP 정규식

이 마이그레이션을 수행하면서 사이트 레이아웃을 단순화하고 URL을보다 직관적으로 만들기 위해 많은 URL을 변경했습니다.

이전 URL에 대한 요청을 캡처 한 다음 새 페이지의 제목을 기반으로 사용자를 새 URL로 리디렉션하는 전달 시스템을 설정하려고합니다.

Drupal은 생성 된 URL에서 이러한 curlies를 인코딩하지만 내 전달자가이를 제거하기 때문에 제목에 둥근 아포스트로피가 포함 된 페이지를 제외하고는 매우 잘 작동합니다! 현재

나는이 표현 사용하여 페이지 제목을 정리 : 표준이 아닌 문자와 공백 대신 하이픈 (-)를 대체 할 ...

/[^a-z\-\d]+/i (A preg_replace이다와)

을 .

저는 곱슬 어포 스트로피가 다르게 인코딩되어이 표현식에 의해 트랩되고 제거된다는 것을 알고 있습니다.

곱슬 아포스트로피를 무시하고 하이픈으로 변환하지 않도록 정규식에 어떻게 알립니 까?

+0

아포스트로피는 몇 가지 종류가 있습니까? 하나만있는 경우 str_replace (" '", "", $ value)로 바꾸면 어떨까요? – Bernhard

+0

Bernhard에게 감사드립니다. 문제는 마이그레이션 프로세스 중에 Drupal에 의해 생성 된 모든 URL에 포함되어 있기 때문에 URL을 제거하지 않고 보존해야한다는 것입니다. 그래서 나는 그 순간에 나는 그 (것)들을 제거하고있는 동안 curlies를 유지하고 싶고 나는 이것을 할 길을 찾을 수 없다. – Chris

+0

ok chris, [^ a-z- \ d ']는 무엇입니까? 그런데 REPLACE()를 사용하여 데이터베이스 쿼리에서 어포 스트로피를 간단하게 제거 할 수 있습니다. – Bernhard

답변

0

유용한 정보는 filters입니다.

$var="http://www.w3s'choo��ls.co�m"; 

var_dump(filter_var($var, FILTER_SANITIZE_URL)); 

$var은 " '"문자를 유지하지만 유효하지 않은 문자는 삭제됩니다.