Eu usaria uma ferramenta linnux conhecida para o windows: grep
Agora você terá que fazer algumas partes complicadas do encadeamento para combinar com o que procura e, em seguida, filtrar o máximo de falsos positivos com algo assim para pesquisar age
(correspondência <image...>
tags e alguns js também no meu caso de teste:
grep -ri 'age' * | grep -v '<script[^>]+>[^<]+<\/script>' | grep -v '<[^>]*age[^>]*>' | grep -E '^[^.]*\.(php|html)'
o que ele faz é o seguinte (cada comando grep):
- Primeiramente, você recebe todas as linhas contendo
age
recursivamente com-r
e não diferencia maiúsculas de minúsculas com-i
- Em seguida, corresponde a todas, exceto as que estão em
<script*>*</script>
block (-v
inverte a correspondência), removendo os blocos de script das correspondências - A terceira remove correspondências de uma tag, isso pode excluir resultados válidos como
<div id=age>age</div>
se as tags estiverem na mesma linha que a palavra pesquisada. - Por último, filtre os resultados no nome do arquivo para manter apenas os arquivos php ou html. Isso requer regexes estendidos (opção grep
-E
) para a construção A ou B(A|B)
Isso provavelmente é um pouco confuso, mas você NÃO pode analisar html com um regex e analisar todos os arquivos com um (X ) Analisador de HTML para, em seguida, encontrar apenas o texto parece bastante complexo para alcançar também.