Hola
Es sencillo, un string abierto con ", se cierra con otro ". Si abres con ' se cierra con otro ', tanto en html como en php
En este caso, el problema es que al poner
Código:
onClick='funcion('parametro');'
lo que sucede es que la ' del parámetro cierra el onclick en lugar de ser parte del código javascript, por lo que todo falla. Entonces si cambiamos por
Código:
onClick="funcion('parametro');"
las " " corresponderán al atributo onClick y las ' solo serán parte del contenido.
En el php sucede lo mismo
Código PHP:
echo "<img src="http://www.forosdelweb.com/f18/error-enviar-datos-funcion-javascript-835513/..." />";
Puedes ver que las " " del src, cierran el echo en lugar de ser parte del string, como necesitamos. Entonces lo que se hace es escaparlas, es decir agregarle \ atrás para que no sean interpretadas como comillas, sino como un caracter más del string. Fijate la diferencia con los colores:
Código PHP:
echo "<img src=\"...\" />";
Lo mismo sucede con el signo $, para que no sea interpretado como una variable y otros caracteres de escape. Para más info:
http://php.net/manual/en/language.types.string.php
Saludos