Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso transformar uma string como essa: | A# | B/D# | C11 | D | E | F | G |;
Nisso : | &A#& | &B&/&D#& | &C&11 | &D& | &E& | &F& | &G& |;
O problema é que eu não entendo nada de expressão regular e não estou enxergando outra saída. Tentei usar str_replace(), porém não consigo fazer a função funcionar como quero. No exemplo que dei acima ela me retorna: | &A&# | &B&/&D&# | &C&11 | &D& | &E& | &F& | &G& |, porém preciso que os "#" estejam dentro dos "&".
Vou explicar as regras que preciso seguir:
Regra 1 - Somente de A - G e o simbolo "#";
Regra 2 - Tratar uma letra no range A - G seguida de "#", ex: "A#", como um somente um match;
Regra 3 - Adicionar o simbolo "&" antes e depois de cada match, EX: Recebeu | G | G# | G11 | G/B | deve transformar em | &G& | &G#& | &G&11 | &G&/&B& |>
1 hora atrás, tetsuo disse:
Só pra eu entender:
Por quê você precisa colocar as letras das notas musicais entre dois &?
Eu estou desenvolvendo um app para minha igreja, e eu preciso que no app as notas das músicas não sejam fixas. Então fiz uma função que identifica essa sequência de caracteres "¬a&" e substitui por outra nota, "¬a+incremento&". E então retorna essa nova nota sem os "&".
Ex.: &C& => &C+1& = C#
$string = "| A# | B/D# | C11 | D | E | F | G |";
echo preg_replace("@([A-Z](#)?)@", '&$1&', $string);Então... se é só pra transpor o tom, creio que talvez não precise dos &
A lógica teria que ser outra
>
2 horas atrás, tetsuo disse:
Então... se é só pra transpor o tom, creio que talvez não precise dos &
A lógica teria que ser outra
Então, não consegui pensar numa outra forma de transpor os tons. Tive dificuldade em fazer o script reconhecer somente as notas, por isso criei uma sequência de caracteres junto com a nota, pra ficar simples de identificar que aquilo é uma nota e não uma letra qualquer. E ignorar as letras das músicas. Mas se tiver algum ideia estou aberto a sugestões.
Olá!
Segue sugestão:
Eu seguiria o exemplo de um grande site de cifras(cifraclub), lá, somente as notações dos acordes ficam entre as tags <b></b>
Assim, você só precisa performar a regex, no que estiver dentro das tags <b></b>
Só pra eu entender:
Por quê você precisa colocar as letras das notas musicais entre dois &?