メモは、15件ありました。 KT-memo

■ホームページ作成の標準化(パターン)

各ページはフォルダごとに作成する
サイト共通はルートにフォルダを作成する
ページごとの情報は、ページ用のフォルダに作成する
各コンテンツ内容は、include展開する
記事(文章)は"nl2br(file_get_contents($text_file));"で読み込む
(関数[ルーティン化]を作成した方が良いかも)

Test

1.フォルダ構成

ルート
index.php トップページ
[img]
[css]
[下位ページ]
├index.php
├index.css
├index.php
├index_000.php
├index_010.php

index_01_cont.tct

$text_file="index_010.txt"
echo nl2br(file_get_contents($text_file]));

2.sourceの構造化

<!--■base2024.html-->
<!DOCTYPE html>
<!--
/// c:\tool\_ing/1page-net/1page-net/_base/base20210627/base.html
/// https://1page-net.work/_base/base20210627/base.html
///
-->
<!--■<html>-->
<html lang = "ja">
<head>
<title>【title】</title>
<meta
<!-- CSS -->
<link
<!-- ■アイコン
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
-->
<!--■<style>-->
<style>
}
</style>

<!--■<script>-->
<scrip
</head>
<!-- ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ -->
<!--
1. ■<body>-->
<body class="bgfix_wrap"
style="display: block;background-image: url(../img/back2.jpg) ;
background-repeat: repeat;
background-attachment: fixed;
background-size:contain;"
>
<div class="body_filter">
<!-- ------------------------------------------------ -->

<hr class="">
<!-- 0 ■ホームページ作成の標準化(パターン)-->
<div class="wrapper_1200">
<?php include('index_00_cont.php'); ?>
</div>
<hr class="">
<!-- 1 ■フォルダ構成-->
<div class="wrapper_1200">
<?php include('index_01_cont.php'); ?>
</div>
<hr class="">
<!-- 2 ■ホームページ作成の標準化(パターン)-->
<div class="wrapper_1200">
<?php include('index_02_cont.php'); ?>
</div>

<!-- ------------------------------------------------ -->
<P>
<script>
document.write("Hello world!!");
</script>
</P>
bbb
</body>


</html>

3.php 関数について

<組み込み関数>----------------------------------------------------------
var_dump
count
rsort
mt_rand
strlen
empty
is_numeric
----------------------------------------------------------<組み込み関数>
nl2br(htmlspecialchars(file_get_contents($text_file), ENT_QUOTES));

4.テキストファイルのメモ帳

1ファイルに1案件
1行目は、タイトル
2行目以降が本文
先頭文字でコメント・画像など別の情報を登録してもよいかも
----------------------------------------------------------
最終的にはEditor機能も付けるが・・・
メモ用のdirにあるメモデータ一覧を取得してインデックス付き表示をする
左にタイトル一覧右に「本文」

5.各種一覧

・CSS
・style登録保存されているcssファイル
・フレームワーク(ページデザインパターン)
・Script
・ルーチン化PHP
・meta
・関数
・関数が登録保全されているファイル
・命名規約
・タグ(html)の種類使い方
・テスト用のhtml・phpなど


6.PHP

■php作成メモ
・1行目と2行目以降を分割する
・行頭文字の制御文字をスキップ
・制御文字を決める
・制御文字の機能を決める
 コメント
 画像
 スタイル
 ???
----------------------------------------------------------
必要になりそうな文字列処理
・分割・置換・検索…
----------------------------------------------------------
区切り文字になりそうな文字列(デリミタ文字)
!"#%&'()*+,-./:;<=>?[\]^`{|}~。「」、・
[space][tab][改行]
-----------------------------
改行コードは3種類
・CRLF改行(\r\n)
・CR改行(\r)
・LF改行(\n)

<メモ>-----------------------------
改行コードを扱うときは、ダブルクォーテーションです。シングルクォーテーションだと文字列扱いしちゃうのでご注意を。
-----------------------------<メモ>
■「文字列を分割する方法」について-----------------------------
改行コードの3種類を1つに統一するために置換します。たとえばLF改行(\n)に統一します。
1 $str = str_replace(array("\r\n", "\r", "\n"), "\n", $str);

次に、explode関数で文字列を改行部分で分割し、配列にする
1 $arr = explode("\n", $str);

※改行コードを扱うときは、ダブルクォーテーションです。シングルクォーテーションだと文字列扱いになるので注意!
参考:https://sachips.byeto.jp/php/string_linebreak_explode.html
-----------------------------「文字列を分割する方法」について

<文字列を分割する関数>----------------------------------------------------------
split関数
以前までは「split関数」を使用しておりました。しかし、「split関数」は PHP5.3で非推奨となり、PHP7.0で完全に削除されました。
explode関数
対象の文字列を文字列によって分割し、配列として値を返す
explode ("分割文字", 分割したい文字列 ,最大要素数)
<例>-----------------------------
//文字列
$str = "A/B/C/D";

//explode関数で文字列を分割
$split = explode("/", $str,2);
-----------------------------
Array(
[0] => A
[1] => B/C/D
)
-----------------------------<例>
これを利用して、1行目と2行目以降を分けられそうですね

preg_split関数
複数の分割文字列を指定することができます。
<例>-----------------------------
$str = "A,B-C-D,E,F-G"

$split = preg_split("/[,-]/", $str);
-----------------------------
Array(
[0] => A
[1] => B
[2] => C
[3] => D
[4] => E
[5] => F
[6] => G
)
-----------------------------<例>
str_split関数
文字列を指定した数字で分割します。
<例>-----------------------------
$str = "ABCDEFGHI";

$split = str_ssplit($str,3);
-----------------------------
Array
(
[0] => ABC
[1] => DEF
[2] => GHI
)
-----------------------------<例>
----------------------------------------------------------<文字列を分割する関数>
[ファイルの読み込み処理]----------------------------------------------------------
■1.fgets関数
ファイルから1行読み込みます。
fgets()は、通常fopen()fclose()と併用して読み込み処理をします。
[fgets()でファイルの中身全文を取得するにはループ処理]-----------------------------
$filename = 'memo.txt';
$fp = fopen($filename, 'r');

if ($fp){
if (flock($fp, LOCK_SH)){
while (!feof($fp)) {
$buffer = fgets($fp);
print($buffer);
}

flock($fp, LOCK_UN);
}else{
print('ファイルロックに失敗しました');
}
}

fclose($fp);
-----------------------------
fopen()
feof()
fgets()
fclose()
-----------------------------[fgets()でファイルの中身全文を取得するにはループ処理]
■2.fgetss関数
でタグを取り除き読み込み
$txt = fgetss($fp, 4096, '<h1>');
第三引数(除外しないタグを指定)は省略可能
■3.file_get_contents関数
1行だけでなく全文読み込むシンプルな関数
file_get_contents ( 読み込みたいファイル名またはパス [ , include_path [ , context [ , 開始位置 [ , 読み込む文字バイト数 ]]]] ([ ]は省略可));
■4.readfile関数
readfile ( 読み込みたいファイル名またはパス [ , include_path [ , context ]] ([ ]は省略可));
■5.file関数
ファイル全体を読み込んで配列に格納します。
1行が1つの要素となります。
file ( 読み込みたいファイル名またはパス [ , フラグ(省略可)] );
※第二引数のフラグは以下の3種類で、省略も可能です。
①FILE_USE_INCLUDE_PATH
ファイルを、インクルードディレクトリも含めて探す
②FILE_IGNORE_NEW_LINES
配列の各要素の最後に改行文字\nを追加しない
③FILE_SKIP_EMPTY_LINES
空の行は読み飛ばす
<例>-----------------------------
<?php
// ファイルを変数に格納
$filename = 'memo.txt';
// ファイルを配列に格納し、さらに変数に格納
$lines = file($filename);
?>
<ul>
<!-- foreachでファイルの配列をループ処理 -->
<?php foreach ($lines as $line) : ?>
<!-- 配列の要素を1行ずつ<li>タグに埋め込む -->
<li><?php echo $line; ?></li>
<?php endforeach; ?>
</ul>
-----------------------------<例>
-----------------------------
参考:https://www.flatflag.nir87.com/fgets-810
----------------------------------------------------------[ファイルの読み込み処理]
[使えそうな処理を考えてみた]-01-----------------------------
<?php
/* テキストファイルのデータを変数に読み込む */
// ファイルを変数に格納
$text_file = 'memo.txt';
// ファイルを読み込み変数に格納
$text_data = file_get_contents($text_file);

/* テキストファイルの1行目と2行目以降に分ける */
/* 数種類の改行を1種類に変換 */
$text_data = str_replace(array("\r\n", "\r", "\n"), "\n", $text_data);
/* */
$split = explode("\n", $text_data,2);
$doc_title = nl2br(htmlspecialchars($split[0], ENT_QUOTES));
$doc_text = nl2br(htmlspecialchars($split[1], ENT_QUOTES));
echo "1行目(タイトル):".$doc_title;
echo "2行目以降(本文):".$doc_text;
?>
[使えそうな処理を考えてみた]-02-----------------------------

<?php
// ファイルを変数に格納
$filename = 'memo.txt';
// ファイルを配列に格納し、さらに変数に格納
$lines = file($filename);
?>
<ul>
<!-- foreachでファイルの配列をループ処理 -->
<?php foreach ($lines as $line) : ?>
<!-- 配列の要素を1行ずつ<li>タグに埋め込む -->
<li><?php echo $line; ?></li>
<?php endforeach; ?>
</ul>


7.html TAG

TAG(html)
----------------------------------------------------------
<code>
「等幅フォント」を使って表示されます。ソースコード表示に適している。
</code>
----------------------------------------------------------
<pre>タグを使うと、改行やタブ・スペースを入れて整形したテキストをそのまま表示することができます。<pre>は「preformatted text」の略です。
----------------------------------------------------------
<a>タグ リンク(ハイパーリンクの指定)
属性
href="リンク先のアドレス"
リンク先のアドレスに#を指定すると、ページ内リンク(ID属性でリンクする)
<a href="example.html#abc">外部ABCの位置へジャンプ</a>
<a href="#abc">ABCの位置へジャンプ</a>
----------------------------------------------------------
<再検討課題>-----------------------------
CSSでDIVを横並びについて
-----------------------------<再検討課題>

8.css

CSS
----------------------------------------------------------
----------------------------------------------------------

9.


----------------------------------------------------------
----------------------------------------------------------

10.PHP:配列

PHPでよく使う配列操作まとめ
----------------------------------------------------------
■まず宣言
-----------------------------
$args = array();

$args = [];

$args = ["aaa", "bbb", "ccc"];
5.4からarray()ではなく、[]での宣言も可能になっています。
-----------------------------
■ループ
-----------------------------
foreach ($args as $key => $value) {
echo "キー : " . $key . "\n";
echo "値 : " . $value . "\n";
echo "\n";
}
-----------------------------
キー : 0
値 : aaa

キー : 1
値 : bbb

キー : 2
値 : ccc
-----------------------------
■値の挿入([]、push)
-----------------------------
$args = [];
$args[] = "aaa";
$args[] = "bbb";
array_push($args, "ccc");
print_r($args);
-----------------------------
Array
(
[0] => aaa
[1] => bbb
[2] => ccc
)
-----------------------------
array_push
[]はひとつの値を、array_pushはひとつから複数の値を配列に挿入することができます。
もし配列にひとつの要素を加えるためにarray_pushを使用するなら、[]を使うことを推奨とのこと。
-----------------------------
■足し算、マージ
-----------------------------
$args1 = [
"1",
"1",
"a" => "1",
"b" => "1",
];
$args2 = [
"2",
1 => "2",
"10" => "2",
"a" => "2",
"c" => "2",
];
echo "args1 + args2\n";
print_r($args1 + $args2);
echo "array_merge(args1, args2)\n";
print_r(array_merge($args1, $args2));
-----------------------------
args1 + args2
Array
(
[0] => 1
[1] => 1
[a] => 1
[b] => 1
[10] => 2
[c] => 2
)
array_merge(args1, args2)
Array
(
[0] => 1
[1] => 1
[a] => 2
[b] => 1
[2] => 2
[3] => 2
[4] => 2
[c] => 2
)
-----------------------------
array_merge
+演算子の場合、左の配列に対して、存在しないキーの要素を追加します。
array_mergeの場合、両配列ともキーが数値のものは全て保持され、新しく0から始まる連続した数値の添字で格納されます。それ以外の同じキーの文字列を持つ要素は後ろの配列に上書きされます。
-----------------------------
■配列であるか
-----------------------------
$value = "test";

if (is_array($value)) {
echo "valueは配列です\n";
} else {
echo "valueは配列ではありません\n";
}

$args = [];

if (is_array($args)) {
echo "argsは配列です\n";
} else {
echo "argsは配列ではありません\n";
}
-----------------------------
valueは配列ではありません
argsは配列です
-----------------------------
is_array
配列であればtrue、それ以外はfalseを返します。もちろん空配列も配列としてtrueを返します。
-----------------------------
■配列の要素に特定の値を含むものがあるか
-----------------------------
$args = ["aaa", "bbb", "ccc"];

if (in_array("bbb", $args)) {
echo "bbbがargsの要素の値に存在しています\n";
} else {
echo "bbbがargsの要素の値に存在しません\n";
}
-----------------------------
bbbがargsの要素の値に存在しています
-----------------------------
in_array
第一引数に指定した値が配列にあればtrue、なければfalseを返します。
-----------------------------
■多次元配列から特定のキーの値、キー名で返す
-----------------------------
$args = [
[
"year" => "2015",
"name" => "去年"
],
[
"year" => "2016",
"name" => "今年"
]
];
$result = array_column($args, "name", "year");
print_r($result);
-----------------------------
Array
(
[2015] => 去年
[2016] => 今年
)
-----------------------------
array_column
多次元配列において、中にある各配列のキーから値を取得できます。
第二引数に各配列の取得したいキーを設定、第三引数は設定しなければ数字の連番、設定した場合、そのキーの値がそれぞれの値のキーとして格納されます。
-----------------------------
■配列の要素全てに特定の処理
-----------------------------
function toDouble($value) {
return $value * 2;
};

$args = [1, 2, 3];

$result = array_map("toDouble", $args);
print_r($result);

-----------------------------
Array
(
[0] => 2
[1] => 4
[2] => 6
)
-----------------------------
array_map
第一引数に指定した関数名の処理を各要素に施した配列を返します。
-----------------------------
■特定の条件の要素のみの絞り込み
-----------------------------
function odd($value) {
return $value % 2 === 1;
}

$args = [1, 2, 3];
$result = array_filter($args, "odd");
print_r($result);
-----------------------------
Array
(
[0] => 1
[2] => 3
)
-----------------------------
array_filter
第二引数に指定した関数名の関数を各配列に処理し、その関数がtrueと判断できる値を返したものだけが配列に格納されます。
-----------------------------
■多次元配列での各配列の特定要素を用いてのソート
-----------------------------
$args = [
[
"year" => "2015",
"name" => "未"
],
[
"year" => "2014",
"name" => "午"
],
[
"year" => "2016",
"name" => "申"
]
];
array_multisort(array_column($args, 'year'), SORT_ASC, $args);

print_r($args);
-----------------------------
Array
(
[0] => Array
(
[year] => 2014
[name] => 午
)

[1] => Array
(
[year] => 2015
[name] => 未
)

[2] => Array
(
[year] => 2016
[name] => 申
)

)
-----------------------------
array_multisort
array_columnで配列のソートの基準となる値を抽出して、それを基準に配列をソートしています。SORT_ASCをSORT_DESCに変更することで逆順が可能です。
-----------------------------
■まとめてみて
-----------------------------
PHPって色々関数があるなあと。このほかにも配列に対してソートも色々種類があったり、正規表現を使った処理を行うものなどまとめきれないのでこのくらいで。
array_mapとarray_filterのように対象の配列が関数によって引数の位置が違うのは注意しなくてはいけないところですね。
----------------------------------------------------------


11.各種ツール

各種ツールを紹介します
----------------------------------------------------------
■サイトマップ作製
-----------------------------
・サイトマップGO!
https://sitemapgo.net/

https://www.xml-sitemaps.com/





タイトル一覧

■HP作成の標準化
<a href="#01">1.フォルダ構成</a>
<a href="#02">2.sourceの構造化</a>
<a href="#03">3.php 関数について</a>
<a href="#04">4.テキストファイルのメモ帳</a>
<a href="#05">5.各種一覧</a>
<a href="#06">6.PHP</a>
<a href="#07">7.TAG</a>
<a href="#08">8.CSS</a>

■メモページを作成(KT-memo)

ホームページで簡単にメモを作成・閲覧ができるもの
パスワード管理で共有できる
1つのメモは、テキストファイルで保存される
1行目がタイトルとなる