使用PHP动态创建将用户输入与预先存在的内容相结合的外部文件

时间:2017-08-27 07:01:17

标签: php arrays

我正在尝试使用PHP动态创建一个将用户输入与预先存在的内容相结合的.js文件。

简而言之,其原因在于我在Javascript中创建了一个基于Web的平台,允许人们阅读简短的基于文本的故事,这些故事就像两个或更多人之间的对话一样逐行传递。从技术角度来看,每个故事都使用单个html文件和相应的.js文件,从中提取内容。

我希望我的用户能够创建和分享他们自己的故事。理论上我认为这应该很简单,但遗憾的是,虽然我知道Javascript的方式,但我知道PHP很少。

到目前为止,我已整理了用户将用于构建故事的表单。可以在此处找到一个工作示例:http://damian.me/editor/?name1=John&name2=Mike&name3=Andrew&name4=Roger (我现在使用URL数据填充表单)

目前提交此表单只会将所有内容都抛出一个数组,如下所示:

array(3) {
  ["msgName"]=>
  array(4) {
    [0]=>
    string(4) "John"
    [1]=>
    string(4) "Mike"
    [2]=>
    string(5) "Roger"
    [3]=>
    string(6) "Andrew"
  }
  ["msgContent"]=>
  array(4) {
    [0]=>
    string(34) "Something that john said goes here"
    [1]=>
    string(34) "Something that mike said goes here"
    [2]=>
    string(35) "Something that roger said goes here"
    [3]=>
    string(36) "Something that andrew said goes here"
  }
  ["Leader"]=>
  string(4) "John"
}

我需要做的是找到一种方法来获取这些数据,并将其转换为我的.js文件的数据。因此,使用上面的数组,所需的输出将是:

},
'0': {
    'text': "<p><div class=\"user gang p1\"><strong>John</strong><br>\nSomething that john said goes here\n</div>\n<br></p>",
    'passages': {
    },
},
'1': {
    'text': "<p><div class=\"person gang p2\"><strong>Mike</strong><br>\nSomething that mike said goes here\n</div>\n<br></p>",
    'passages': {
    },
},
'2': {
    'text': "<p><div class=\"person gang p2\"><strong>Roger</strong><br>\nSomething that roger said goes here\n</div>\n<br></p>",
    'passages': {
    },
},
'3': {
    'text': "<p><div class=\"person gang p2\"><strong>Andrew</strong><br>\nSomething that andrew said goes here\n</div>\n<br></p>",
    'passages': {
    },

你会注意到John的div类略有不同,那是因为根据数组,他是“领导者”。因此,除了循环用户提供的数据之外,还需要某种类型的IF语句来捕获它。

总而言之,认识到用户可以根据我的表单提交任意数量的对话行,如何从数组中获取数据并以上述格式输出(到外部.js文件中)?

最终的.js文件需要附加一个页眉和页脚,但这是我自己无法解决的上述数组操作问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是非常危险的。我已经为你实现了你想要的一个简单的例子。

重要!您需要首先清理字符串:http://php.net/manual/en/filter.filters.sanitize.php

现在代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="@dimen/collapsing_toolbar_title_margin_end"
            app:expandedTitleMarginStart="@dimen/collapsing_toolbar_title_margin_start"
            app:expandedTitleTextAppearance="@style/CollapsedAppBarTextAppearance"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                android:scaleType="fitXY"
                android:src="@drawable/ashiyana_cover"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:minHeight="?android:attr/actionBarSize"
                app:layout_collapseMode="pin">
            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <com.lsjwzh.widget.materialloadingprogressbar.CircleProgressBar
        android:id="@+id/progressBar"
        android:layout_width="@dimen/width_circle_progress_bar"
        android:layout_height="@dimen/height_circle_progress_bar"
        android:visibility="gone"
        app:mlpb_progress_color="@color/colorPrimary"
        android:layout_gravity="center"/>

    <!-- RECYCLER VIEW FOR DISPLAYING COMICS CARD GRID-->
    <android.support.v4.widget.NestedScrollView
        android:id="@+id/list_comics"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/background_color"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <Button
                android:id="@+id/button_beAHost"
                style="@style/Widget.AppCompat.Button.Colored"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top_frag_main_screen"
                android:layout_gravity="end"
                android:textSize="@dimen/text_size_button_frag_main_screen"
                android:text="Be A Host"
                tools:text="Be A Host"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="@dimen/padding_main_screen">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="@dimen/text_size_heading"
                    android:textColor="@color/title_text_color"
                    android:text="@string/string_search"
                    tools:text="Search"/>

                <Button
                    android:id="@+id/button_room"
                    style="@style/Widget.AppCompat.Button.Colored"
                    android:layout_width="@dimen/width_button_search_layout_frag_main_screen"
                    android:layout_height="@dimen/height_button_search_layout_frag_main_screen"
                    android:layout_marginTop="@dimen/margin_top_frag_main_screen"
                    android:paddingStart="@dimen/padding_search_layout_frag_main_screen"
                    android:paddingLeft="@dimen/padding_search_layout_frag_main_screen"
                    android:gravity="start|center_vertical"
                    android:textSize="@dimen/text_size_button_frag_main_screen"
                    android:text="@string/string_room"
                    tools:text="Room"/>

                <Button
                    android:id="@+id/button_hostel"
                    style="@style/Widget.AppCompat.Button.Colored"
                    android:layout_width="@dimen/width_button_search_layout_frag_main_screen"
                    android:layout_height="@dimen/height_button_search_layout_frag_main_screen"
                    android:layout_marginTop="@dimen/margin_top_frag_main_screen"
                    android:paddingStart="@dimen/padding_search_layout_frag_main_screen"
                    android:paddingLeft="@dimen/padding_search_layout_frag_main_screen"
                    android:gravity="start|center_vertical"
                    android:textSize="@dimen/text_size_button_frag_main_screen"
                    android:text="@string/string_hostel"
                    tools:text="Hostel"/>

                <Button
                    android:id="@+id/button_apartment"
                    style="@style/Widget.AppCompat.Button.Colored"
                    android:layout_width="@dimen/width_button_search_layout_frag_main_screen"
                    android:layout_height="@dimen/height_button_search_layout_frag_main_screen"
                    android:layout_marginTop="@dimen/margin_top_frag_main_screen"
                    android:paddingStart="@dimen/padding_search_layout_frag_main_screen"
                    android:paddingLeft="@dimen/padding_search_layout_frag_main_screen"
                    android:gravity="start|center_vertical"
                    android:textSize="@dimen/text_size_button_frag_main_screen"
                    android:text="@string/string_apartment"
                    tools:text="Apartment"/>
            </LinearLayout>

        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>