DE JAVASCRIPT A PHP
Publicado por david (1 intervención) el 25/04/2009 18:51:32
Hola amigos, acabo de descubrir esto del php y ya tengo un auténtico problema que me tiene enganchado. El caso es que estoy intentando hacer una versión en php de un curioso javascript. Se trata de un generador de poemas aleatorio y lo podéis ver en http://thinkzone.wlonk.com/PoemGen/PoemGen.htm
Os dejo aquí el código javascript extraído del html. Con mis escasas nociones de php y algunos manuales intenté hacer algo similar valiéndome de sencillos random, luego descubrí que no era posible de esa forma, además lo suyo sería que el resultado no saliera en una caja de texto sino que quedara integrado en el html y cambiara al recargar la página. ¿Podéis echarme una mano? Mi madre dice que si no salgo a tomar el aire me deja sin Internet! ;D
Un saludo
<script type="text/javascript">
random_count=0;
nsentences=0;
nwords1=0; nwords2=0; nwords3=0; nwords4=0; nwords5=0;
nwords6=0; nwords7=0; nwords8=0; nwords9=0;
function init(form)
{
form.Samples.selectedIndex=1;
generate_input(form, form.Samples.options[form.Samples.selectedIndex].text);
make_poem(form);
}
function generate_input(form, sample_name)
{
form.title1.value = "Concrete Nouns";
form.title2.value = "Abstract Nouns";
form.title3.value = "Transitive Verbs";
form.title4.value = "Intransitive Verbs";
form.title5.value = "Adjectives";
form.title6.value = "Adverbs";
form.title7.value = "";
form.title8.value = "";
form.title9.value = "Interjections";
form.sentences.value =
"THE 5 1 6 3S THE 1."
+" 5, 5 1S 6 3 A 5, 5 1."
+" 2 IS A 5 1."
+" 9, 2!"
+" 1S 4!"
+" THE 1 4S LIKE A 5 1."
+" 1S 4 LIKE 5 1S."
+" WHY DOES THE 1 4?"
+" 4 6 LIKE A 5 1."
+" 2, 2, AND 2."
+" WHERE IS THE 5 1?"
+" ALL 1S 3 5, 5 1S."
+" NEVER 3 A 1."
;
if (sample_name == "Sea") {
form.list1.value = "SEA SHIP SAIL WIND BREEZE WAVE CLOUD MAST CAPTAIN SAILOR SHARK WHALE TUNA SEASHELL PIRATE LAD GIRL GULL REEF SHORE MAINLAND MOON SUN";
form.list2.value = "ADVENTURE COURAGE ENDURANCE DESOLATION DEATH LIFE LOVE FAITH";
form.list3.value = "COMMAND VIEW LEAD PULL LOVE DESIRE FIGHT";
form.list4.value = "TRAVEL SAIL WAVE GROW RISE FALL ENDURE DIE";
form.list5.value = "BIG SMALL OLD COLD WARM SUNNY RAINY MISTY CLEAR STORMY ROUGH LIVELY DEAD";
form.list6.value = "SWIFTLY CALMLY QUIETLY ROUGHLY";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "O OH OOH AH LORD GOD WOW GOLLY GOSH";
} else if (sample_name == "City") {
form.list1.value = "CITY STREET SIDEWALK CORNER DOOR WINDOW CAR TRUCK GUY GIRL JOB FLOWER LIGHT CIGARETTE RAIN SKYSCRAPER JACKHAMMER DRIVER WORKER";
form.list2.value = "ACTION WORK NOISE DESOLATION DEATH LIFE LOVE FAITH ANGER EXHAUSTION";
form.list3.value = "GET GRAB PUSH LOVE DESIRE BUY SELL FIGHT HUSTLE";
form.list4.value = "TALK WALK GOSSIP RUN GO STOP EAT GROW SHRINK SHOP WORK";
form.list5.value = "BIG SMALL OLD FAST COLD HOT DARK DUSTY GRIMY DRY RAINY MISTY NOISY FACELESS DEAD";
form.list6.value = "QUICKLY LOUDLY CALMLY QUIETLY ROUGHLY";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "O OH OOH AH LORD GOD DAMN";
} else {
clear_all(form);
}
form.outtext.value = "";
count_all_lines(form);
}
function clear_all(form)
{
form.Samples.value = "-";
form.title1.value = "";
form.title2.value = "";
form.title3.value = "";
form.title4.value = "";
form.title5.value = "";
form.title6.value = "";
form.list1.value = "";
form.list2.value = "";
form.list3.value = "";
form.list4.value = "";
form.list5.value = "";
form.list6.value = "";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "";
form.sentences.value = "";
form.outtext.value = "";
count_all_lines(form);
}
function count_all_lines(form)
{
nwords1 = count_lines(form.list1);
nwords2 = count_lines(form.list2);
nwords3 = count_lines(form.list3);
nwords4 = count_lines(form.list4);
nwords5 = count_lines(form.list5);
nwords6 = count_lines(form.list6);
nwords7 = count_lines(form.list7);
nwords8 = count_lines(form.list8);
nwords9 = count_lines(form.list9);
nsentences = count_lines(form.sentences);
}
function random(maxnum)
{
r = Math.floor(Math.random() * maxnum) + 1;
if (r > maxnum) r = maxnum;
return r;
}
function count_lines(txt)
{
str = txt.value;
len = str.length;
nword = 1;
for (i = 0; i < len; i++) {
if (str.charAt(i) == " ") {
nword++;
}
}
if (str.charAt(len-1) == " ") nword--;
return nword;
}
function get_line(str, lnum)
{
len = str.length;
iline = 1; ichar = 0; jchar = -1;
for (i = 0; i < len; i++) {
if (str.charAt(i) == " ") {
iline++;
if (iline == lnum) {
ichar = i + 1;
} else if (iline == (lnum + 1)) {
jchar = i - 1;
if (str.charAt(jchar) == " ") {
jchar--;
}
break;
}
}
}
if (jchar < 0) jchar = len - 1;
// Note: substring() doesn't work consistently on all browsers
s = "";
for (i = ichar; i <= jchar; i++) {
s = s + str.charAt(i);
}
return s;
}
function make_poem(form)
{
form.outtext.value = "";
count_all_lines(form);
nlines = random(4) + 1;
for (ilin = 1; ilin <= nlines; ilin++) {
make_poem_line(form)
}
}
function make_poem_line(form)
{
pattern = get_line(form.sentences.value, random(nsentences));
lenpat = pattern.length;
for (ichr = 0; ichr < lenpat; ichr++) {
chr = pattern.charAt(ichr);
// If the pattern contains a digit n, then pick a random word from list n
if ((chr >= '1') && (chr <= '9')) {
if (chr == '1') {
wrd = get_line(form.list1.value, random(nwords1));
} else if (chr == '2') {
wrd = get_line(form.list2.value, random(nwords2));
} else if (chr == '3') {
wrd = get_line(form.list3.value, random(nwords3));
} else if (chr == '4') {
wrd = get_line(form.list4.value, random(nwords4));
} else if (chr == '5') {
wrd = get_line(form.list5.value, random(nwords5));
} else if (chr == '6') {
wrd = get_line(form.list6.value, random(nwords6));
} else if (chr == '7') {
wrd = get_line(form.list7.value, random(nwords7));
} else if (chr == '8') {
wrd = get_line(form.list8.value, random(nwords8));
} else if (chr == '9') {
wrd = get_line(form.list9.value, random(nwords9));
} else {
wrd = '';
}
form.outtext.value = form.outtext.value + wrd;
} else {
form.outtext.value = form.outtext.value + chr;
}
}
form.outtext.value = form.outtext.value + " ";
}</script>
Os dejo aquí el código javascript extraído del html. Con mis escasas nociones de php y algunos manuales intenté hacer algo similar valiéndome de sencillos random, luego descubrí que no era posible de esa forma, además lo suyo sería que el resultado no saliera en una caja de texto sino que quedara integrado en el html y cambiara al recargar la página. ¿Podéis echarme una mano? Mi madre dice que si no salgo a tomar el aire me deja sin Internet! ;D
Un saludo
<script type="text/javascript">
random_count=0;
nsentences=0;
nwords1=0; nwords2=0; nwords3=0; nwords4=0; nwords5=0;
nwords6=0; nwords7=0; nwords8=0; nwords9=0;
function init(form)
{
form.Samples.selectedIndex=1;
generate_input(form, form.Samples.options[form.Samples.selectedIndex].text);
make_poem(form);
}
function generate_input(form, sample_name)
{
form.title1.value = "Concrete Nouns";
form.title2.value = "Abstract Nouns";
form.title3.value = "Transitive Verbs";
form.title4.value = "Intransitive Verbs";
form.title5.value = "Adjectives";
form.title6.value = "Adverbs";
form.title7.value = "";
form.title8.value = "";
form.title9.value = "Interjections";
form.sentences.value =
"THE 5 1 6 3S THE 1."
+" 5, 5 1S 6 3 A 5, 5 1."
+" 2 IS A 5 1."
+" 9, 2!"
+" 1S 4!"
+" THE 1 4S LIKE A 5 1."
+" 1S 4 LIKE 5 1S."
+" WHY DOES THE 1 4?"
+" 4 6 LIKE A 5 1."
+" 2, 2, AND 2."
+" WHERE IS THE 5 1?"
+" ALL 1S 3 5, 5 1S."
+" NEVER 3 A 1."
;
if (sample_name == "Sea") {
form.list1.value = "SEA SHIP SAIL WIND BREEZE WAVE CLOUD MAST CAPTAIN SAILOR SHARK WHALE TUNA SEASHELL PIRATE LAD GIRL GULL REEF SHORE MAINLAND MOON SUN";
form.list2.value = "ADVENTURE COURAGE ENDURANCE DESOLATION DEATH LIFE LOVE FAITH";
form.list3.value = "COMMAND VIEW LEAD PULL LOVE DESIRE FIGHT";
form.list4.value = "TRAVEL SAIL WAVE GROW RISE FALL ENDURE DIE";
form.list5.value = "BIG SMALL OLD COLD WARM SUNNY RAINY MISTY CLEAR STORMY ROUGH LIVELY DEAD";
form.list6.value = "SWIFTLY CALMLY QUIETLY ROUGHLY";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "O OH OOH AH LORD GOD WOW GOLLY GOSH";
} else if (sample_name == "City") {
form.list1.value = "CITY STREET SIDEWALK CORNER DOOR WINDOW CAR TRUCK GUY GIRL JOB FLOWER LIGHT CIGARETTE RAIN SKYSCRAPER JACKHAMMER DRIVER WORKER";
form.list2.value = "ACTION WORK NOISE DESOLATION DEATH LIFE LOVE FAITH ANGER EXHAUSTION";
form.list3.value = "GET GRAB PUSH LOVE DESIRE BUY SELL FIGHT HUSTLE";
form.list4.value = "TALK WALK GOSSIP RUN GO STOP EAT GROW SHRINK SHOP WORK";
form.list5.value = "BIG SMALL OLD FAST COLD HOT DARK DUSTY GRIMY DRY RAINY MISTY NOISY FACELESS DEAD";
form.list6.value = "QUICKLY LOUDLY CALMLY QUIETLY ROUGHLY";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "O OH OOH AH LORD GOD DAMN";
} else {
clear_all(form);
}
form.outtext.value = "";
count_all_lines(form);
}
function clear_all(form)
{
form.Samples.value = "-";
form.title1.value = "";
form.title2.value = "";
form.title3.value = "";
form.title4.value = "";
form.title5.value = "";
form.title6.value = "";
form.list1.value = "";
form.list2.value = "";
form.list3.value = "";
form.list4.value = "";
form.list5.value = "";
form.list6.value = "";
form.list7.value = "";
form.list8.value = "";
form.list9.value = "";
form.sentences.value = "";
form.outtext.value = "";
count_all_lines(form);
}
function count_all_lines(form)
{
nwords1 = count_lines(form.list1);
nwords2 = count_lines(form.list2);
nwords3 = count_lines(form.list3);
nwords4 = count_lines(form.list4);
nwords5 = count_lines(form.list5);
nwords6 = count_lines(form.list6);
nwords7 = count_lines(form.list7);
nwords8 = count_lines(form.list8);
nwords9 = count_lines(form.list9);
nsentences = count_lines(form.sentences);
}
function random(maxnum)
{
r = Math.floor(Math.random() * maxnum) + 1;
if (r > maxnum) r = maxnum;
return r;
}
function count_lines(txt)
{
str = txt.value;
len = str.length;
nword = 1;
for (i = 0; i < len; i++) {
if (str.charAt(i) == " ") {
nword++;
}
}
if (str.charAt(len-1) == " ") nword--;
return nword;
}
function get_line(str, lnum)
{
len = str.length;
iline = 1; ichar = 0; jchar = -1;
for (i = 0; i < len; i++) {
if (str.charAt(i) == " ") {
iline++;
if (iline == lnum) {
ichar = i + 1;
} else if (iline == (lnum + 1)) {
jchar = i - 1;
if (str.charAt(jchar) == " ") {
jchar--;
}
break;
}
}
}
if (jchar < 0) jchar = len - 1;
// Note: substring() doesn't work consistently on all browsers
s = "";
for (i = ichar; i <= jchar; i++) {
s = s + str.charAt(i);
}
return s;
}
function make_poem(form)
{
form.outtext.value = "";
count_all_lines(form);
nlines = random(4) + 1;
for (ilin = 1; ilin <= nlines; ilin++) {
make_poem_line(form)
}
}
function make_poem_line(form)
{
pattern = get_line(form.sentences.value, random(nsentences));
lenpat = pattern.length;
for (ichr = 0; ichr < lenpat; ichr++) {
chr = pattern.charAt(ichr);
// If the pattern contains a digit n, then pick a random word from list n
if ((chr >= '1') && (chr <= '9')) {
if (chr == '1') {
wrd = get_line(form.list1.value, random(nwords1));
} else if (chr == '2') {
wrd = get_line(form.list2.value, random(nwords2));
} else if (chr == '3') {
wrd = get_line(form.list3.value, random(nwords3));
} else if (chr == '4') {
wrd = get_line(form.list4.value, random(nwords4));
} else if (chr == '5') {
wrd = get_line(form.list5.value, random(nwords5));
} else if (chr == '6') {
wrd = get_line(form.list6.value, random(nwords6));
} else if (chr == '7') {
wrd = get_line(form.list7.value, random(nwords7));
} else if (chr == '8') {
wrd = get_line(form.list8.value, random(nwords8));
} else if (chr == '9') {
wrd = get_line(form.list9.value, random(nwords9));
} else {
wrd = '';
}
form.outtext.value = form.outtext.value + wrd;
} else {
form.outtext.value = form.outtext.value + chr;
}
}
form.outtext.value = form.outtext.value + " ";
}</script>
Valora esta pregunta


0