2017-10-27 1 views
0

나는 preg_replace를 사용하여 일부 기능을 만들었습니다. 코드는 미리보기를 얻는 것입니다. 내가 URL을 https://instagram.com/p/BarUcqwht_u링크 URL을 필터링하는 방법 http : // 및 www와 preg replace

와 함께 인스 타 그램을 게시 할 경우

는이 코드

$strings  = htmlspecialchars_uni($thread['soc_instagram']); 
$searchs  = array('~(?:https://instagram\.com/p/)?([a-zA-Z0-9_\-+?:]+)~'); 
$replaces = array('https://instagram.com/p/$1/media/?size=l'); 
$soc_instagram = preg_replace($searchs,$replaces,$strings); 

완벽한 코드 작업을했다 그리고 코드

https://instagram.com/p/BaQsAubg6H3/media/?size=l 

생산하지만 문제는 내가 할 때입니다 URL에 WWW를 추가하려고하면 https://www.instagram.com/p/BarUcqwht_u 코드에서 오류 문자열

을 생성합니다. 63,210

, 감사

+0

Sooo ... (www)가 1 회 또는 0 회 있는지 확인해야합니까? –

답변

0

결과는 내가 내 preg_replace이다 코드에서 WWW를 추가하려고이

https://instagram.com/p/https:/media/?size=l//https://instagram.com/p/www/media/?size=l.https://instagram.com/p/instagram/media/?size=l.https://instagram.com/p/com/media/?size=l/https://instagram.com/p/p/media/?size=l/https://instagram.com/p/BarUcqwht_u/media/?size=l/ 

처럼하지만 결과는 어떤 도움이 좋을 것이

https://www.instagram.com/p/https:/media/?size=l//https://www.instagram.com/p/instagram/media/?size=l.https://www.instagram.com/p/com/media/?size=l/https://www.instagram.com/p/p/media/?size=l/https://www.instagram.com/p/BaQsAubg6H3/media/?size=l 

처럼 될 것입니다 프로토콜 뒤에 www.을 추가하고 선택적으로 만듭니다. preg_replace도 배열을 필요로하지 않습니다. 문자열은 잘 동작합니다.

$strings  = 'https://www.instagram.com/p/BarUcqwht_u'; 
$searchs  = '~(?:https://(?:www\.)?instagram\.com/p/)?([a-zA-Z0-9_\-+?:]+)~'; 
$replaces = 'https://instagram.com/p/$1/media/?size=l'; 
$soc_instagram = preg_replace($searchs,$replaces,$strings); 
echo $soc_instagram; 

데모 : https://3v4l.org/WSors

무엇 현재 구현 않는 것은 URL와 캐릭터 클래스에없는 대체합니다 자입니다. 시각적 인 표현은 https://regex101.com/r/PXb2h1/2/을 참조하십시오.

+0

감사합니다. –

관련 문제