Но ждать! Обещаю, это не еще один из тех вопросов. Это один из тех поощряемых вопросов, на которые я сам отвечал, и возник в результате некоторых экспериментов, которые я провел.
Как запустить PHP на Javascript? Я не спрашивать о запуске PHP на сервере, а затем отправляю полученную строку в браузер как Javascript. Я буквально говорю о парсинге Javascript и запуске PHP.
Это может быть полезно во многих местах:
Я поискал и нашел php-parser и babel-preset-php, но ничего не запускал. В идеале я ищу что-то подобное, хотя через Google / SO / etc ничего не нашел:
// No server needed, "just" Javascript parsing PHP
alert(php(`<?= "Hello world" ?>`));
Обновлено: если вы знаете способ лучше, чем мой собственный, пожалуйста, поделитесь им! Мне очень любопытно, что думает сообщество.
Это не было моим намерением, ссылка на мой блог удалена! Я думаю, что этот вопрос / ответ может стоять сам по себе и может быть интересен сообществу :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это возможно! Используя две библиотеки, упомянутые в вопросе, проанализируйте babel-preset-php и повторно используйте некоторые части для преобразования PHP в Javascript, а затем оцените Javascript. Вот рабочая демонстрация, не стесняйтесь писать базовый PHP в <textearea> и нажимать run, чтобы запустить PHP в браузере:
const $ = sel => document.querySelector(sel);
$('#horrible').addEventListener('submit', e => {
e.preventDefault();
eval($('#horrible textarea').value);
});body, html {
margin: 0;
}
textarea {
line-height: 1.5;
margin: 0;
height: 2.1em;
padding: .3em .6em;
border: 1px solid #ccc;
background-color: #fff;
border-radius: .2em;
transition: all 0.3s;
width: 90%;
}
button {
display: inline-block;
text-align: center;
margin: 0;
padding: .3em .9em;
vertical-align: middle;
background: #0074d9;
color: #fff;
border: 0;
border-radius: .2em;
width: auto;
user-select: none;
margin: .3em 0;
cursor: pointer;
transition: all 0.3s;
border-radius: .2em;
height: auto;
box-shadow: 0 0 rgba(0,0,0,0) inset;
}<form id = "horrible">
<textarea style = "min-height:150px">const vars = { icon: '🎉' };
const out = php(`<?= "for fun! ".$icon ?>`, vars);
alert(out);</textarea>
<button data-tooltip = "Are you sure? Like, 100%? There is no coming back">EVAL()</button>
<script src = "https://francisco.io/blog/running-php-in-javascript/php.min.js"></script>Вот фактический фрагмент кода, использованный для создания файла php.js, указанного выше:
import parser from 'php-parser';
import translator from './translator';
import generator from '@babel/generator';
const run = (code, opts) => {
// Make a closure so that `out` doesn't collide with the PHP variables:
let out = '';
// Define `echo` since it's used in the transpiled JS code for some reason
opts.echo = opts.echo || (str => out += str);
// Pretend this is safe. Pro tip: IT IS NOT SAFE
new Function(...Object.keys(opts), code)(...Object.values(opts));
return out;
}
export default function (src, opts = {}) {
const ast = new parser().parseCode(src);
const file = translator.translateProgram(ast);
const code = generator(file).code;
return run(code, opts);
};
если вы хотите написать что-то на jsvascript. Тогда необходимо, чтобы код javascript был в файле php, т.е. если имя файла - temp.php
и код javascript должен быть в теге скрипта.
например. test.php (ваше имя файла php)
<html>
<head>
<script>
function myFunc(){
alert('<?php echo date("Y/m/d"); ?>');
}
</script>
</head>
</html>
Приведенный выше код предупреждает о дате. Вышеуказанная дата является функцией даты php.
Первоначально php-сервер выполняет вышеуказанный код и обрабатывает JS-код как простой текст.
и будет выглядеть, как показано ниже, когда дело доходит до клиента / браузера
<html>
<head>
<script>
function myFunc(){
alert("2018/06/30");
}
</script>
</head>
</html>
Вопрос не в том, чтобы запустить PHP на сервере. Обычно разработчики умеют это делать.
Я понимаю, что подобный, но другой вопрос задавали тысячи раз раньше, но, пожалуйста, перечитайте его. Это не из тех! Я просто выделил разницу. Я спрашиваю, как разбирать и запускать PHP в Javascript. Я также даю собственный ответ о том, как это сделать.
Кроме вашего ответа не «проанализируйте и запустите PHP в Javascript». Ваш PHP работает на сервере и выводит Javascript.
вы просто рассылаете спам в своем блоге.