2016-06-08 3 views
3

.pdf으로 끝나는 href 속성이있는 <a> 태그에 추적 코드를 추가해야합니다. 추적 코드는 onClick 속성 인 onClick="LogClick(this);"입니다. 따라서 예제 링크는 <a class="some-class" href="/path/to/some/file.pdf">에서 <a class="some-class" href="/path/to/some/file.pdf" onClick="LogClick(this);">으로 갈 수 있습니다.정규 표현식과 일치하는 링크에 속성 추가

나는 그 태그들과 일치하는 정규 표현식을 가지고 있다고 믿지만, 여기서부터 무엇을해야하는지 이해하는 데 어려움을 겪고있다. 이것은 PHP를 통해 수행되고 있습니다. 저는 str_replace()이 유용 할 수 있다고 생각합니다. 그러나 문자열의 내용을 유지하는 방법과 href 이후 약간의 압정을 유지하는 방법을 모르겠습니다.

내 정규 표현식 : 나는 이런 짓을 했을까

<a (.*)?href=('|")(.*).pdf('|")(.*)> 
+0

시도 [이 사용'preg_replace' 등 (https://eval.in/585529). [정규식 테스트] (https://regex101.com/r/sX2lG3/1) 할 수 있습니다. –

답변

3

,

<?php 
$html = '<a class="some-class" href="/path/to/some/file.pdf">'; 
echo preg_replace('/(<a (.*)?href=(\'|")(.*).pdf\3(.*?))>/', '$1onClick="LogClick(this);">', $html); 

str_replace

정규 표현식 작동하지 않습니다. 정규 표현식에서 역 참조도 사용 했으므로 시작 href에 사용 된 인용 유형이 모두 닫는 것과 일치합니다. 파서 사용을 고려할 수도 있습니다.

PHP 데모 : https://eval.in/585526
정규식 데모 : https://regex101.com/r/sZ0qE0/1

관련 문제