我正在尝试使用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文件需要附加一个页眉和页脚,但这是我自己无法解决的上述数组操作问题。
非常感谢任何帮助。
答案 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>